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