シェルスクリプトでは、数十台のサーバーを含むサーバークラスターにSSH接続します。ただし、一部の新しいサーバーはコマンドを正しく実行しません。はい、または問題ありません。だから私はsshに新しいサーバーをsshするために自動的に'yes'
を使わせたい。 yum -y install
のように。
sshpass -p "$pass" ssh root@Host "command"
sshpass -p "$pass" scp /local/file root@Host:$directory/
これは、StrictHostKeyChecking
オプションがask
に設定されていることが原因である可能性があります。明示的に設定することはできません。ask
がデフォルト値です。
から _man 5 ssh_config
_ :
StrictHostKeyChecking
このフラグがyes
に設定されている場合、ssh(1)
はホストキーを_~/.ssh/known_hosts
_ファイルに自動的に追加せず、ホストキーが持っているホストへの接続を拒否しますかわった。これにより、トロイの木馬の攻撃に対する最大限の保護が提供されますが、_/etc/ssh/ssh_known_hosts
_ファイルの保守が不十分な場合や、新しいホストへの接続が頻繁に行われる場合は煩わしい場合があります。このオプションは、ユーザーにすべての新しいホストを手動で追加するように強制します。このフラグがno
に設定されている場合、sshはユーザーの既知のhostsファイルに新しいホストキーを自動的に追加します。このフラグがask
に設定されている場合、ユーザーが本当にやりたいことをユーザーが確認した後にのみ、新しいホストキーがユーザーの既知のホストファイルに追加され、sshはそのホストのホストへの接続を拒否しますキーが変更されました。既知のホストのホストキーは、すべての場合に自動的に検証されます。引数はyes
、no
、またはask
でなければなりません。デフォルトはask
です。
オプションをno
に設定したいようです。 _/etc/ssh/ssh_config
_の行は次のようになります。
_StrictHostKeyChecking no
_
または、_-o StrictHostKeyChecking=no
_をツールに渡すことで、ssh
またはscp
の呼び出し中にオプションをオーバーライドできます。例:
_ssh -o StrictHostKeyChecking=no root@Host "command"
scp -o StrictHostKeyChecking=no /local/file root@Host:"$directory"/
_
デフォルト値VerifyHostKeyDNS
のask
オプションもあることに注意してください。マニュアルを参照してください。それを変更する必要がある場合、解決策は同様です。
あなたはこれを試すことができます:
ssh-keyscan -t ecdsa serverName
キーを~/.ssh/known_hosts
に追加します。