Saya sebenarnya tidak perlu menjalankan perintah di bawah ini, dan saya mengetahui kunci ssh jika saya ingin masuk tanpa mengetik kata sandi. Saya hanya ingin tahu bagaimana ssh
sepertinya menghindari pengalihan file saya.
Jalankan perintah berikut, ssh
meminta saya untuk memasukkan kata sandi:
ssh [email protected] > /dev/null 2> /dev/null < /dev/null
Bagaimana cara kerjanya? stdin
, stdout
, dan stderr
semuanya dialihkan, tetapi ssh
masih berhasil mencetak Prompt di layar saya dan membaca apa yang saya ketik. Saya mencoba menambahkan ssh
argumen -t -t
dan -T
(tidak keduanya sekaligus), untuk mengaktifkan atau menonaktifkan alokasi pseudo-tty, tetapi tidak ada bedanya.
Saya juga mencoba menutup semua input dan output dengan cara ini, meskipun saya tidak tahu apakah saya mengetiknya dengan benar. Namun, ssh
meminta kata sandi:
(exec 0<&- 1<&- 2<&- 0>&- 1>&- 2>&-; ssh [email protected])
Jawaban yang Diterima:
Dari OpenSSH readpassphrase.c, baris 75:
/*
* Read and write to /dev/tty if available. If not, read from
* stdin and write to stderr unless a tty is required.
*/
Program membaca dan menulis TTY secara langsung sehingga tidak mungkin untuk menonaktifkan input langsung hanya dengan menutup pipa input dan output standar. Anda harus memberi tahu klien SSH untuk menggunakan kata sandi yang disediakan atau melakukan seperti yang disarankan oleh @muru.