当我ssh到一台机器时,有时我会收到这个错误警告,它会提示我说"yes“或"no”。当从自动ssh到其他机器的脚本运行时,这会造成一些问题。
警告消息:
The authenticity of host '<host>' can't be established.
ECDSA key fingerprint is SHA256:TER0dEslggzS/BROmiE/s70WqcYy6bk52fs+MLTIptM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'pc' (ECDSA) to the list of known hosts.有没有办法自动说“是”或忽略这一点?
发布于 2010-09-08 09:26:14
根据您的ssh客户机,您可以在命令行上将StrictHostKeyChecking选项设置为no,和/或将密钥发送到空的known_hosts文件。您还可以在配置文件中为所有主机或一组给定的IP地址或主机名设置这些选项。
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no编辑
正如@IanDunn指出的那样,这样做存在安全风险。如果您要连接的资源已被攻击者欺骗,他们可能会向您重播目标服务器的挑战,欺骗您认为您正在连接到远程资源,而实际上他们是使用您的凭据连接到该资源。在更改连接机制以跳过HostKeyChecking之前,您应该仔细考虑这是否是一个适当的风险。
Reference。
发布于 2014-07-30 00:44:01
一个值得更好回答的老问题。
您可以在不禁用StrictHostKeyChecking的情况下阻止交互式提示(这是不安全的)。
将以下逻辑合并到脚本中:
if [ -z "$(ssh-keygen -F $IP)" ]; then
ssh-keyscan -H $IP >> ~/.ssh/known_hosts
fi它检查服务器的公钥是否在known_hosts中。如果不是,它从服务器请求公钥并将其添加到known_hosts。
这样,您只会受到一次中间人攻击,可以通过以下方式减轻攻击:
确保脚本首次通过安全的channel
发布于 2013-08-23 05:12:50
要禁用(或控制禁用),请将以下行添加到/etc/ssh/ssh_config的开头...
Host 192.168.0.*
StrictHostKeyChecking=no
UserKnownHostsFile=/dev/null选项:
*,以允许对所有IP进行不受限制的访问。/etc/ssh/ssh_config用于全局配置,编辑~/.ssh/config用于特定于用户的配置。请参阅http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html
有关superuser.com的类似问题,请参阅https://superuser.com/a/628801/55163
https://stackoverflow.com/questions/3663895
复制相似问题