web-dev-qa-db-ja.com

シェルsshを禁止する方法はいまたはいいえ入力を続行しますか?

シェルスクリプトでは、数十台のサーバーを含むサーバークラスターにSSH接続します。ただし、一部の新しいサーバーはコマンドを正しく実行しません。はい、または問題ありません。だから私はsshに新しいサーバーをsshするために自動的に'yes'を使わせたい。 yum -y installのように。

sshpass -p "$pass" ssh root@Host "command"
sshpass -p "$pass" scp /local/file root@Host:$directory/
2
Tiina

これは、StrictHostKeyCheckingオプションがaskに設定されていることが原因である可能性があります。明示的に設定することはできません。askがデフォルト値です。

から _man 5 ssh_config_

StrictHostKeyChecking
このフラグがyesに設定されている場合、ssh(1)はホストキーを_~/.ssh/known_hosts_ファイルに自動的に追加せず、ホストキーが持っているホストへの接続を拒否しますかわった。これにより、トロイの木馬の攻撃に対する最大限の保護が提供されますが、_/etc/ssh/ssh_known_hosts_ファイルの保守が不十分な場合や、新しいホストへの接続が頻繁に行われる場合は煩わしい場合があります。このオプションは、ユーザーにすべての新しいホストを手動で追加するように強制します。このフラグがnoに設定されている場合、sshはユーザーの既知のhostsファイルに新しいホストキーを自動的に追加します。このフラグがaskに設定されている場合、ユーザーが本当にやりたいことをユーザーが確認した後にのみ、新しいホストキーがユーザーの既知のホストファイルに追加され、sshはそのホストのホストへの接続を拒否しますキーが変更されました。既知のホストのホストキーは、すべての場合に自動的に検証されます。引数はyesno、または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"/
_

デフォルト値VerifyHostKeyDNSaskオプションもあることに注意してください。マニュアルを参照してください。それを変更する必要がある場合、解決策は同様です。

3

あなたはこれを試すことができます:

ssh-keyscan -t ecdsa serverName

キーを~/.ssh/known_hostsに追加します。

0
coco