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
方法来设置一个策略,以忽略主机密钥检查。
以下是具体的解决方案:
paramiko
库,创建一个SSHClient
对象,并加载系统主机密钥。import paramiko
client = paramiko.SSHClient()
client.load_system_host_keys()
AutoAddPolicy
对象,并将其作为参数传递给set_missing_host_key_policy
方法,这样可以忽略对主机密钥的检查。这将在第一次连接到远程服务器时自动添加新的主机密钥。from paramiko import AutoAddPolicy
client.set_missing_host_key_policy(AutoAddPolicy())
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)