如何使用paramiko解决BadHostKeyException?

问题描述 投票:0回答:1

我有以下代码来连接到 Linux 盒子并运行命令,但我面临着 即使我添加了

WarningPolicy
AutoAddPolicy
,仍然出现 BadHostKeyException。

            print("---CCCCCCCCCCCCC---",commands)
            client = paramiko.SSHClient()
            client.load_system_host_keys()
            client.set_missing_host_key_policy(paramiko.WarningPolicy)
            client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            client.connect(ipAddress, port=22, username=sshUser, password=sshPassword)
            self.logger.info("executeOnRemoteShell - Created SSH connection to " + ipAddress)
            stdin, stdout, stderr = client.exec_command(commands)
            result = str(stdout.readlines()[0].rstrip())

不确定我在这里缺少什么,下面是完整的错误。

paramiko.ssh_exception.BadHostKeyException: Host key for server '45.32.23.23' does not match: got 'AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGcWA6JnHBbVIGsdC+USD2GOxWNy+R8hiiFiLse75rs1JRTWN8i3ol3yZ4OhFhQl4upZ7f5/scFzw4DqoMrhRIE=', expected 'AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJSELS2mT8SED8I7QFf5YkkvD5n4LCHUkX4ykeemwuqGHOBVHixQMBtKWF9lFuKFhKOCNsifRPK1FfkT23glapI
python linux paramiko ssh-keys
1个回答
0
投票

快速回复:

根据 github 上的讨论,解决方案可能是摆脱

client.load_system_host_keys()

如果您使用 SSHClient connect(),则不要调用 load_host_keys(),

更一般地说,

paramiko.ssh_exception.BadHostKeyException
并不意味着主机密钥丢失,而是它已更改,或者无论您的客户认为主机密钥应该是什么,都是不准确的。这是一种防止中间人攻击场景的安全措施。错误消息中的长字符串是客户端期望的内容和主机提供的内容的 base64 编码的非 ascii 版本。

© www.soinside.com 2019 - 2024. All rights reserved.