実際、以下のコマンドを実行する必要はありません。パスワードを入力せずにログインしたい場合は、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クライアントに指示する必要があります。