SSH 错误:未知密钥类型 '-----BEGIN'

fen*_*rbb 8 ssh

我在使用授权密钥通过 SSH 登录远程服务器时遇到问题。我收到的错误消息如下所示:

OpenSSH_5.2p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to xx.xx.xx [xxx.xx.xx.xx] port 22.
debug1: Connection established.
debug3: Not a RSA1 key file /Users/bfenker/.ssh/id_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
...
debug2: key_type_from_name: unknown key type '-----END'
debug3: key_read: missing keytype
debug1: identity file /Users/bfenker/.ssh/id_rsa type 1
ssh_exchange_identification: Connection closed by remote host
Run Code Online (Sandbox Code Playgroud)

这个网站上的其他问题也贴了类似的问题,解决方法通常是仔细检查客户端的所有权限,我已经这样做了:

drwxr-xr-x+ 23 bfenker          staff   782 May  8 11:02 bfenker
drwx------   8 bfenker          staff   272 May  8 10:05 .ssh
-rw-------   1 bfenker  staff  1675 May  8 09:51 id_rsa
-rw-r--r--   1 bfenker  staff   418 May  8 09:51 id_rsa.pub
-rw-------   1 bfenker  staff   999 May  8 09:46 identity
-rw-r--r--   1 bfenker  staff   663 May  8 09:46 identity.pub
-rw-r--r--   1 bfenker  staff   416 May  8 09:06 known_hosts
Run Code Online (Sandbox Code Playgroud)

我可以使用授权密钥通过 SSH 连接到另一台服务器,并从该服务器通过 SSH 连接到我想要的服务器。这是我正在尝试修复的一种可行的解决方法,但我认为这也表明我的客户端和服务器都设置正常。

请注意,当我成功通过 SSH 连接到不同的服务器时,我收到相同的错误消息,但它似乎从以下几行开始恢复:

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这在某些情况下有效,但在我想要的情况下无效?任何其他建议将不胜感激!

Mar*_*ner 13

死讯!基于您可以使用此密钥登录另一台服务器的事实,@michael-hampton 处于正确的路径上:目标服务器上有一些东西(防火墙/tcp 包装器/sshd 配置)拒绝访问。所有这些关于不正确密钥格式的讨论都是基于对调试信息的错误解释的红鲱鱼。线

debug1: identity file /Users/bfenker/.ssh/id_rsa type 1
Run Code Online (Sandbox Code Playgroud)

表示 ssh 能够理解密钥。

  • 这应该更高,我有与此完全相同的日志,但最终它确实理解了 SSH 密钥,而且我没有出于其他原因进行连接。为什么它在日志中说它无法理解密钥,而实际上它可以理解,这超出了我的理解。 (4认同)

Hau*_*ing 8

您的 SSH 密钥以错误的格式存储。OpenSSH 使用放在一行中的密钥。您需要ssh-keygen使用-i-m选项,请参阅man ssh-keygen。可能是其中之一:

ssh-keygen -m RFC4716 -i -f /Users/bfenker/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

将输出用作新的密钥文件 ( ssh-keygen ... >newkeyfile)。

编辑1:

请注意:“此选项将读取未加密的私钥(或公钥)文件”

因此,可能必须通过理解该格式的程序将该文件更改为没有密码的文件。