shell 如何禁止 ssh 输入“您确定要继续连接吗”

shell 如何禁止 ssh 输入“您确定要继续连接吗”

在 shell 脚本中,它 ssh 到包含数十台服务器的服务器集群。但有些新服务器无法正确运行命令。我认为这是 ssh 是或否的问题。所以我想让 ssh'yes'自动用于 ssh 到新服务器。就像yum -y install

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

答案1

这可能是因为StrictHostKeyChecking选项设置为ask。可能没有明确设置,ask是默认值。

man 5 ssh_config

StrictHostKeyChecking
如果将此标志设置为yesssh(1)将永远不会自动将主机密钥添加到文件~/.ssh/known_hosts,并且拒绝连接到主机密钥已更改的主机。这提供了对特洛伊木马攻击的最大保护,尽管当文件/etc/ssh/ssh_known_hosts维护不善或频繁连接到新主机时可能会很烦人。此选项强制用户手动添加所有新主机。如果将此标志设置为no,ssh 将自动将新主机密钥添加到用户已知主机文件中。如果将此标志设置为ask,只有在用户确认这是他们真正想要做的事情后,才会将新主机密钥添加到用户已知主机文件中,并且 ssh 将拒绝连接到主机密钥已更改的主机。在所有情况下,都将自动验证已知主机的主机密钥。参数必须是yesnoask。默认值为ask

看起来您想将选项设置为no/etc/ssh/ssh_config行中的内容为:

StrictHostKeyChecking no

或者您可以通过传递给工具来覆盖ssh或调用期间的选项,例如:scp-o StrictHostKeyChecking=no

ssh -o StrictHostKeyChecking=no root@host "command"
scp -o StrictHostKeyChecking=no /local/file root@host:"$directory"/

注意还有VerifyHostKeyDNS一个具有默认值的选项ask。请参阅手册。如果需要更改它,解决方案是类似的。

答案2

你可以尝试这个:

ssh-keyscan -t ecdsa serverName

它将添加密钥到~/.ssh/known_hosts

相关内容