为什么私钥显示没有 EOL 的密码保护?

Why does Private key appear password protected with no EOL?

我有一个服务器设置,可以通过从外部安全服务器提取密钥通过 SSH 访问。 SSH 密钥不受密码保护,但是当我尝试访问服务器时要求输入密码:

Enter passphrase for key 'my-key'

当我使用 vi 查看密钥时,它在文件末尾有一条 noeol 消息

-----BEGIN OPENSSH PRIVATE KEY-----

...
...
-----END OPENSSH PRIVATE KEY-----
~
~
~
~
~
~
~
~/.ssh/my-key" [noeol] 27L, 1798C

当我在复制密钥时附加 \n 时,此问题已得到纠正。为什么缺少 EOL 导致密钥查找密码?

可能是因为(专有)OPENSSH 私钥格式,described here,其中包括:

  • 格式 ID 前缀
  • 加密headers
  • 块中未使用的键数
  • 一个 rfc4253 风格的 ssh public 密钥
  • 有点仿照 rfc4253 样式的私钥
  • 一条评论
  • 用于将私钥与块大小对齐的填充