以下のコマンドを実際に実行する必要はありません。パスワードを入力せずにログインしたい場合は、sshキーを認識しています。 ssh
の方法を知りたいだけです ファイルのリダイレクトを回避しているようです。
次のコマンドを実行します、ssh
パスワードの入力を求められます:
ssh [email protected] > /dev/null 2> /dev/null < /dev/null
これはどのように作動しますか? stdin
、stdout
、およびstderr
すべてリダイレクトされますが、ssh
それでも、画面にプロンプトを印刷して、入力内容を読み取ることができます。 ssh
を追加してみました 引数-t -t
および-T
(両方を同時にではなく)、疑似tty割り当てを有効または無効にしますが、違いはありません。
正しく入力したかどうかはわかりませんが、この方法ですべての入力と出力を閉じてみました。それでも、ssh
パスワードの入力を求めるプロンプト:
(exec 0<&- 1<&- 2<&- 0>&- 1>&- 2>&-; ssh [email protected])
承認された回答:
OpenSSH readpassphrase.cの75行目から:
/*
* Read and write to /dev/tty if available. If not, read from
* stdin and write to stderr unless a tty is required.
*/
プログラムはTTYを直接読み書きするため、標準の入力パイプと出力パイプを閉じるだけで直接入力を無効にすることはできません。 SSHクライアントに、提供されたパスワードを使用するか、@muruの提案に従って実行するように指示する必要があります。