Linuxボックスから別のLinuxボックスに接続し、特定のコマンドの出力をフェッチするにはsshコマンドが必要ですが、保存、キャンセルするためのsshキーを要求せずに、接続を強制的に確立する必要があります。
これまで、出力を接続してフェッチするコマンドを試しましたが、パブリックsshキーを保存するためのプロンプトを受信しました
value=$(ssh -q -P $passwd $userid@$box "head -1 /users/SB1.txt")
「ホストキーの検証」を無効にしようとしていますが、次のSSHオプションが必要です。
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
それらを(ssh構成ファイルではなく)コマンドに追加する場合は、
-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
後に -q
サンプルコマンドで。
準備(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ホストキーをすでに認識しています。