目前我正在使用Paramiko(在Python中)在节点上执行远程命令。有时,远程节点会更改其公钥,因此Paramiko会因指纹不匹配而失败。有没有办法在known_hosts
文件更改时更新它们?如果这是不可能的,还有其他方法可以忽略抛出的警告吗?
目前我有一个hacky解决方案,其中known_hosts
文件在拨打电话之前被删除了。
-Prashanth
答案 0 :(得分:2)
BadHostKeyException
,因为这表示连接被劫持(又名Man-in-the-middle attack)。
你永远不应该盲目地忽略这个例外。除非可能,否则,如果您连接到与客户端位于同一专用网络中的服务器。
在您的特定情况下,更好的策略是在服务器重新安装期间保留主机密钥。
无论如何,如果你真的不关心安全性,并且愿意盲目地接受任何主机密钥:
SSHClient.load_host_keys
,以便您从已知主机密钥的空白列表开始; 并使用AutoAddPolicy
自动接受新主机的主机密钥(由于前一点,所有主机都是新主机):
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())