sshがyesで機能しない


2

私は最近、ユーザーに多数のサーバーフィンガープリントを追加しなければならないというフリンジケースを解決しなければなりません known_hosts (認証はキーペアで実行されます)。私は最も簡単な解決策はただ電話することだと思いました

yes yes | ssh *login@host*

。驚くべきことに(少なくとも私には)、これはうまくいきません。 ssh それでも指紋を追加するかどうかを尋ねるので、手動入力が必要です。

私の質問は、なぜこれが当てはまるのでしょうか。 この動作の根底にあるメカニズムは何ですか

回答:


4

このプロンプトでは、 ssh 使用しません 標準入力 & 標準出力 streams - プロンプトがリモートコマンドの入出力と混同されないようにします。 (ランニングを想像してみてください ssh host cat something.tar | tar xそして突然 tar x その入力のゴミについて文句を言う。)

代わりに、 ssh 特別な装置を開く /dev/ttyこれは常にその「制御端末」を指し、そこにプロンプ​​トを書き、そこから答えを読みます。


特にあなたの問題のために、OpenSSHはと来ます ssh-keyscan、一度に多くのサーバーの公開鍵を取得するためのツール。

ssh-keyscan host1 host2 host3 >> ~/.ssh/known_hosts

(私があなたが意味したのかどうかわからない known_hostsまたは実際に必要 authorized_keys ここに。)


一般的なケースでは、 expect utilityは、通常はttyを介して入出力を行うプログラムを自動化するために使用できます。


Gah ...もちろん known_hosts、すみません。私はこれがに関係しているかもしれないと疑った /dev/tty説明を明確にし、そして非常に包括的な答えを得て、特別な場合と一般的な場合の両方に対処してくれてありがとう。
mikołak
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.