目前我正在使用 Paramiko(在 Python 中)在节点上执行远程命令。有时,远程节点会更改其公钥,因此 Paramiko 由于指纹不匹配而失败。有没有办法更新 known_hosts 中的 key ?当他们改变文件?如果这是不可能的,还有其他方法可以忽略引发的警告吗?
目前我有一个 hacky 解决方案,其中 known_hosts文件在调用电话之前被删除,这是不好的。

请您参考如下方法:

BadHostKeyException当主机 key 更改时抛出,因为这是连接被劫持的标志(又名 Man-in-the-middle attack )。
你永远不应该盲目地忽略异常。除非可能,如果您连接到与您的客户端位于同一专用网络中的服务器。
在您的特定情况下,更好的策略是在服务器重新安装期间保留主机 key 。

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

  • 请勿调用 SSHClient.load_host_keys ,以便您从已知主机 key 的空白列表开始;
  • 并使用 AutoAddPolicy , 自动接受新主机的主机 key (由于前一点,所有主机都是新的):
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    

  • 评论关闭
    IT序号网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!