使用paramiko连接遇到问题p 1024

import paramiko
client = paramiko.SSHClient()
client.load_system_host_keys()
client.connect('####.com', username='####', password='###')

ValueError: p must be exactly 1024, 2048, or 3072 bits long

你这里调用了load_system_host_keys,并且走的是默认参数,所以他会load "~/.ssh/known_hosts" 文件,确认下这个文件是否有问题。

【以下回答由 GPT 生成】

解决方案

该错误发生在连接远程服务器时,可能是由于服务器的密钥长度不支持所导致的。为了解决这个问题,你可以使用set_missing_host_key_policy方法来设置一个策略,以忽略主机密钥检查。

以下是具体的解决方案:

  1. 导入paramiko库,创建一个SSHClient对象,并加载系统主机密钥。
import paramiko

client = paramiko.SSHClient()
client.load_system_host_keys()
  1. 创建一个AutoAddPolicy对象,并将其作为参数传递给set_missing_host_key_policy方法,这样可以忽略对主机密钥的检查。这将在第一次连接到远程服务器时自动添加新的主机密钥。
from paramiko import AutoAddPolicy

client.set_missing_host_key_policy(AutoAddPolicy())
  1. 使用connect方法连接到远程服务器,指定正确的IP地址或域名、用户名和密码。
client.connect('####.com', username='####', password='###')

完整的代码示例:

import paramiko
from paramiko import AutoAddPolicy

client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(AutoAddPolicy())
client.connect('####.com', username='####', password='###')

希望这个解决方案对你有帮助,如果你还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

抱歉,写错了。完整的连接过程如下
self.ssh_client = paramiko.SSHClient()
self.ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
self.ssh_client.connect(hostname=ip, port=22, username=user, password=pwd, look_for_keys=False)

抱歉,写错了。完整的连接过程如下
self.ssh_client = paramiko.SSHClient()
self.ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
self.ssh_client.connect(hostname=ip, port=22, username=user, password=pwd, look_for_keys=False)