SSH错误:未知密钥types“—– BEGIN”

我有问题使用授权密钥SSHlogin到远程服务器。 我收到的错误消息如下所示:

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 

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

 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 

我能够使用授权密钥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 

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

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

 ssh-keygen -m RFC4716 -i -f /Users/bfenker/.ssh/id_rsa 

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

编辑1:

请注意这一点:“这个选项将读取一个未encryption的私人(或公共)密钥文件”

所以可能该文件必须改变为一个没有密码的程序,理解这种格式。

Necroquestion! 基于这个事实,你可以使用这个密钥login到另一个服务器@ michael-hampton是正确的path:目标服务器上有一些东西(防火墙/ TCP包装/ sshdconfiguration)拒绝访问。 所有这些关于不正确的键格式的讨论都是基于错误解释debugging信息的红鲱鱼。 该线

 debug1: identity file /Users/bfenker/.ssh/id_rsa type 1 

表明ssh能够理解这个关键。

我的MacBook Pro与MacOS 10.7.5有同样的问题。 我的密钥没有什么问题,只是它们被encryption(使用密码,就像你应该这样做),而不是被ssh正确encryption。 看来ssh-agent有问题。

根据这篇文章 ,试试这个:

  1. /usr/bin/ssh-agent放入您的login项目(系统首选项 – >用户和组 – >select用户 – >login项目)。 在对话框中导航到/usr/bin非常困难,所以文章build议在你的主目录( ln -s /usr/bin/ssh-agent )中创build一个链接,在login项目。

  2. 退出Terminal.app

  3. 重新启动机器。

  4. 打开terminal,然后重试你的ssh命令。

为我工作(至less有一次)。

首先你应该检查你的sshd日志。 即

 less /var/log/secure 

取决于具有安全日志的unix分发文件可能有所不同。 但是当你发现的时候,应该告诉你不能login的原因。