Paramiko SSH客户端无法解压缩ED25519密钥

时间:2020-03-12 19:42:55

标签: python-3.x ssh paramiko ed25519

我正在尝试将密钥对用于与SFTP服务器的SSH连接。

如果我通过ssh-keygen -t rsa生成RSA密钥,则可以这样做。

当我通过Paramiko连接到服务器时,一切正常:

    private_key = paramiko.RSAKey.from_private_key_file("/path/to/my/private/key")
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    print("Connecting.")
    client.connect(hostname="host.sftp.com", username="user", pkey=private_key)
    print("Connected.")

但是,如果尝试使用ED25519键执行此操作,则会出现以下错误:

ssh-keygen -t ed25519
  File "/usr/local/lib/python3.7/site-packages/paramiko/pkey.py", line 235, in from_private_key_file
    key = cls(filename=filename, password=password)
  File "/usr/local/lib/python3.7/site-packages/paramiko/rsakey.py", line 55, in __init__
    self._from_private_key_file(filename, password)
  File "/usr/local/lib/python3.7/site-packages/paramiko/rsakey.py", line 176, in _from_private_key_file
    self._decode_key(data)
  File "/usr/local/lib/python3.7/site-packages/paramiko/rsakey.py", line 192, in _decode_key
    n, e, d, iqmp, q, p = self._uint32_cstruct_unpack(data, "iiiiii")
  File "/usr/local/lib/python3.7/site-packages/paramiko/pkey.py", line 529, in _uint32_cstruct_unpack
    raise SSHException(str(e))
paramiko.ssh_exception.SSHException: unpack requires a buffer of 4 bytes

我在这里有点无所适从,因为谷歌搜索似乎并没有产生任何相关的解决方案。这是paramiko中的错误吗?我如何初始化SSHClient是一个问题?还是实际上是一个理论问题(例如ED25519创建密钥的方式,不可能通过低级unpack()调用来读入)?

1 个答案:

答案 0 :(得分:0)

这是戴夫·汤普森(Dave Thompson)的评论,作为关闭循环的答案:

paramiko.RSAKey.from_private_key_file读取RSA密钥。要读取Ed25519键,请使用paramiko.ed25519key.from_private_key_file。 (并且至少为2.2.0。)

相关问题