我正在使用一个使用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,但我不知道如何解决这个问题...有什么想法这个填充内容是什么?
答案 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