すべての入力と出力がリダイレクトされたときにSSHがパスワードを求めるメッセージをどのように表示できますか?

すべての入力と出力がリダイレクトされたときにSSHがパスワードを求めるメッセージをどのように表示できますか?

実際、以下のコマンドを実行する必要はありません。パスワードを入力せずにログインしたい場合は、SSHキーを知っています。sshファイルリダイレクトをバイパスする方法を知りたいです。

次のコマンドを実行すると、sshパスワードの入力を求められます。

ssh [email protected] > /dev/null 2> /dev/null < /dev/null

どのように動作しますか?stdin、、、stdoutおよびstderrすべてリダイレクトされますが、sshまだ画面にプロンプ​​トを印刷し、私が入力した内容を読むことができます。 pseudo-tty割り当てを有効または無効にするためにAND(両方ではない)パラメータをssh追加しようとしましたが、違いはありませんでした。-t -t-T

私もこのように入力と出力の両方を消そうとしましたが、正しく入力したかどうかはわかりません。それでもsshパスワードの入力を求められます。

(exec 0<&- 1<&- 2<&- 0>&- 1>&- 2>&-; ssh [email protected])

答え1

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 に直接読み書きするため、標準入力および出力パイプを閉じて直接入力を無効にすることはできません。提供されたパスワードを使用するか、@muruが提案したとおりにSSHクライアントに指示する必要があります。

関連情報