使用Paramiko在主机密钥更改时自动更新known_hosts文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Paramiko在主机密钥更改时自动更新known_hosts文件相关的知识,希望对你有一定的参考价值。
目前我正在使用Paramiko(在Python中)在节点上执行远程命令。有时,远程节点会更改其公钥,因此Paramiko会因指纹不匹配而失败。有没有办法在更改时更新known_hosts
文件中的密钥?如果这是不可能的,还有其他方法可以忽略抛出的警告吗?
目前我有一个hacky解决方案,在拨打电话之前删除known_hosts
文件是不好的。
-Prashanth
答案
主机密钥更改时会抛出BadHostKeyException
,因为这是连接被劫持的标志(又名Man-in-the-middle attack)。
你永远不应该盲目地忽略这个例外。除非可能,否则,如果您连接到与客户端位于同一专用网络中的服务器。
在您的特定情况下,更好的策略是在服务器重新安装期间保留主机密钥。
无论如何,如果你真的不关心安全性,并愿意盲目接受任何主机密钥:
- 不要调用
SSHClient.load_host_keys
,以便从一个已知主机密钥的空白列表开始; - 并使用
AutoAddPolicy
自动接受新主机的主机密钥(由于前一点,所有主机都是新的):ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
以上是关于使用Paramiko在主机密钥更改时自动更新known_hosts文件的主要内容,如果未能解决你的问题,请参考以下文章
Python - pysftp / paramiko - 使用其指纹验证主机密钥
python 3 paramiko ssh代理在第三台主机上使用远程命令转发跳转主机