Paramiko ValueError“p 的长度必须恰好为 1024、2048 或 3072 位”

man*_*uzz 7 python ssh sftp paramiko

我正在尝试使用 Python 脚本连接 SFTP。由于“p 错误”,我无法连接。

import paramiko
client = paramiko.SSHClient()
client.load_system_host_keys()
client.connect('####.com', username='####', password='###')
stdin, stdout, stderr = client.exec_command('ls -l')
Run Code Online (Sandbox Code Playgroud)

错误:

ValueError:p 的长度必须恰好为 1024、2048 或 3072 位

man*_*uzz 0

找到文件中计算的值p并包含并保存。pdsa.py

如何计算P:

def _check_dsa_parameters(parameters):

    print(parameters.p.bit_length(),"value of p")
    if parameters.p.bit_length() not in [1024, 2048, 3024]:
Run Code Online (Sandbox Code Playgroud)

将 p 包含在此列表中:

(if parameters.p.bit_length() not in [1024, 2048, p-value]:)
Run Code Online (Sandbox Code Playgroud)

修改后:

def _check_dsa_parameters(parameters):

    if parameters.p.bit_length() not in [1024, 2048, p-value]:
        raise ValueError("p must be exactly 1024, 2048, or 3072 bits long")
Run Code Online (Sandbox Code Playgroud)

进行整改后效果很好。谢谢