web-dev-qa-db-ja.com

sshキーの保存またはキャンセルオプションのメッセージを表示せずにSSHコマンド

Linuxボックスから別のLinuxボックスに接続し、特定のコマンドの出力をフェッチするにはsshコマンドが必要ですが、保存、キャンセルするためのsshキーを要求せずに、接続を強制的に確立する必要があります。

これまで、出力を接続してフェッチするコマンドを試しましたが、パブリックsshキーを保存するためのプロンプトを受信しました

value=$(ssh -q -P $passwd $userid@$box "head -1 /users/SB1.txt")
2
user8554534

「ホストキーの検証」を無効にしようとしていますが、次のSSHオプションが必要です。

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

それらを(ssh構成ファイルではなく)コマンドに追加する場合は、

-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

後に -qサンプルコマンドで。

3
Mark Perryman

準備(SSHクライアントユーザーとボックスで1回):公開鍵認証用の鍵ペアを作成します

ssh-keygen -N '' -t rsa -f ~/.ssh/id_rsa

準備(手動/対話型、ユーザー/サーバーごとに1回):公開鍵認証を設定し、要求せずにホスト鍵を受け入れます(これにより、$useridのパスワードが1回要求されます):

ssh-copy-id -o "StrictHostKeyChecking = no" $userid@$box

次に、対話なしでリモートコマンドを実行します。

value=$(ssh -o 'BatchMode = yes' $userid@$box "head -1 /users/SB1.txt")

SSHクライアントは、ssh-copy-idを実行したときに追加されたため、サーバーのSSHホストキーをすでに認識しています。

2
sborsky