Paramiko在unpad

时间:2017-11-14 12:33:35

标签: ssh paramiko ssh-keygen

我正在使用一个使用paramiko通过SSH连接到服务器的工具。

该工具要求我创建SSH密钥,经过大量尝试和测试后,我已经到达了这个药水:

ssh-keygen -f my-key -o -t ed25519 -N ""

供参考,我使用的是-o,因为该工具需要OPENSSH个密钥。 -t ed25519是因为它期望这种格式。 -N ""是因为它需要未加密的密钥。

现在,paramiko抛出了这个例外:

  File "/usr/lib/python3.6/site-packages/paramiko/ed25519key.py", line 152, in _parse_signing_key_data
    message = Message(unpad(private_data))
  File "/usr/lib/python3.6/site-packages/paramiko/ed25519key.py", line 40, in unpad
    raise SSHException("Invalid key")
paramiko.ssh_exception.SSHException: Invalid key

抛出异常的代码似乎是this,但我不知道如何解决这个问题...有什么想法这个填充内容是什么?

1 个答案:

答案 0 :(得分:0)

从2018年9月开始(以及paramiko版本2.4.2),当密码短语无法解密ed25519密钥时,会引发const str = `A lot of text text text text And more text text text text text`; console.log( str.replace(/[ \t]+/g, ' ') );异常。

您甚至可能没有意识到paramiko试图解密ed25519密钥。

例如,如果应用程序为paramiko提供了RSA密钥文件和匹配的口令,并且远程服务器拒绝了该RSA密钥,则paramiko将在Invalid key处静默寻找ed25519密钥。如果该密钥文件存在,并且您提供的密码短语未能解密该密钥,则会出现~/.ssh/id_ed25519错误。

除了删除Invalid key(糟糕!)之外,我不知道有一个简单的解决方法。

有关更多详细信息,请参见:
https://github.com/paramiko/paramiko/issues/1305

更新:

我发现了另一个错误。带有特定长度注释的任何ed25519密钥也会导致“无效密钥”异常。有关详细信息,请参见:
https://github.com/paramiko/paramiko/issues/1306