SSH 突然返回无效格式

SSH 突然返回无效格式

不久前,我在 AWS 上设置了一个服务器,并使用了他们生成的 SSH 密钥。我将密钥保存到了 Lastpass,之前曾成功从那里检索过密钥,并使其正常工作。但是,今天再次尝试后,我无法让它工作。

-rw------- 1 itsgreg users 1674 Jun 6 12:51 key_name

我已经尝试过ssh -i key_name,,ssh-keygen -f key_name但没有任何效果,我总是收到此错误消息:

Load key "key_name": invalid format

有没有什么办法解决这一问题?

答案1

检查 的内容key_name,如果代理显示invalid format,则密钥有问题 - 例如 .. 您确定这是正确的密钥吗?即使它不是您需要的私钥,invalid format如果密钥有效,ssh 代理也不会返回,您根本无法连接。出于某种原因,您可能将公钥放在了那里。检查一下!

一个常见问题是文件没有以换行符结尾。添加换行符,保存,然后重试。

答案2

我遇到了同样的问题,事实证明由于某种原因我的文件中有 Windows 样式(CRLF)的行分隔符。

此外,文件必须以单个 LF 结尾。

修复这些问题后,一切就恢复正常了。

答案3

从 openssh 7.6 开始,它默认采用一种新的更安全的格式。您可以使用以下命令强制将其转换为该格式以更改您的密钥密码。如果您没有密码和/或不想要密码,您只需按 Enter 键,它仍会以新格式重写密钥

ssh-keygen -f ~/.ssh/id_rsa -p

答案4

如果您收到有关无效公钥格式的警告但命令仍然有效,则可能是因为您只有一个私钥文件并且正在使用 OpenSSH 8.3。

OpenSSH 8.3 对 ssh 客户端进行了更改,它会查找私钥对应的公钥文件并输出此load pubkey "/home/user/.ssh/id.rsa": invalid format警告,但会继续成功连接。使用 ssh 的工具(例如scp或 )git可能会显示key_load_public: invalid format

客户端连接时不需要公钥,只需要私钥。因此,此检查毫无意义,并且它已被上游提交删除,但尚未发布。

有关于此的讨论在 ArchLinux 论坛上

相关内容