plink を使用してサーバーホストキーをキャッシュに自動保存する

plink を使用してサーバーホストキーをキャッシュに自動保存する

外部サーバーから情報を取得するために、plink を使用してコマンドを発行しようとしています。これらの plink コマンドは、ユーザーからの入力を必要としないバイナリから実行されることに注意してください。このエラー メッセージを無効にしてプログラム出力を続行できるフラグはありますか?

The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n)

ありがとう!

答え1

スクリプトの先頭に次のコードを追加してみてください:

echo y | plink -ssh root@REMOTE_IP_HERE "exit"

これにより、文字yがパイプされ、stdinplinkキーをキャッシュに保存しますか? (y/n)プロンプトが表示され、plinkユーザー入力を必要とせずに以降のすべてのコマンドが通過できるようになります。このexitコマンドは、確立された SSH セッションを閉じ、次のplinkコマンドを実行できるようにします。

外部サーバーの Unix 時間をローカル ファイルに書き込むスクリプトの例を次に示します。

echo y | plink -ssh root@REMOTE_IP_HERE "exit"
plink -ssh root@REMOTE_IP_HERE "date -t" > remote_time.tmp

パイプラインリファレンス:http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-4.html

答え2

受け入れられた答えは「受け入れ可能」ですが、安全ではありません。最善の方法は、plinkにホストキーを指定して、真ん中の男攻撃。

plink -hostkey aa:bb:cc... root@REMOTE_IP_HERE [...]

答え3

PuTTYplink.exeインストールされているホスト上で「許容されるサーバー キー」の同じキャッシュを共有します。

あなたのシナリオが相互の作用(したがって、「y」または「n」を押してもあなたの不満が聞き入れられない)、回避策としては、まず PuTTY との接続を試行することです。

これを実行するときは、次の点に注意してください。

  • PuTTYサーバーへの対話型SSHセッションを開いて開始するふりをします
  • キーを信頼するかどうかを尋ねるWindowsダイアログボックスが表示されます。
  • 提示されたキーをチェックしてMITMを回避し、OK
  • 今後は、plink.exeサーバーを信頼するかどうかを尋ねる必要はありません。サーバーはすでに信頼していることを知っています。

答え4

オプションauto_store_sshkeyクリンクの一部であるキティ、ストアキープロンプトをスキップできます。

klink -auto_store_sshkey -batch 192.211.158.256 -l user -pw password 

関連情報