使用Paramiko

时间:2017-11-22 15:32:25

标签: python ssh key paramiko ssh-keys

目前我正在使用Paramiko(在Python中)在节点上执行远程命令。有时,远程节点会更改其公钥,因此Paramiko会因指纹不匹配而失败。有没有办法在known_hosts文件更改时更新它们?如果这是不可能的,还有其他方法可以忽略抛出的警告吗?

目前我有一个hacky解决方案,其中known_hosts文件在拨打电话之前被删除了。

-Prashanth

1 个答案:

答案 0 :(得分:2)

主机密钥更改时会抛出

BadHostKeyException,因为这表示连接被劫持(又名Man-in-the-middle attack)。

你永远不应该盲目地忽略这个例外。除非可能,否则,如果您连接到与客户端位于同一专用网络中的服务器。

在您的特定情况下,更好的策略是在服务器重新安装期间保留主机密钥。

无论如何,如果你真的不关心安全性,并且愿意盲目地接受任何主机密钥:

  • 不要致电SSHClient.load_host_keys,以便您从已知主机密钥的空白列表开始;
  • 并使用AutoAddPolicy自动接受新主机的主机密钥(由于前一点,所有主机都是新主机):

    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())