这个ssh错误是什么意思?

这是我最后的手段。 我一直在试图找出这个问题几个小时。

这是交易:我已经把我的私钥从机器#1复制到机器#2。 机器#1能够通过ssh连接到我的公钥的服务器,但是机器#2在连接到服务器时提供了以下输出:

$ ssh -vvv -i /home/kevin/.ssh/kev_rsa [email protected] -p 22312 OpenSSH_5.3p1 Debian-3ubuntu6, OpenSSL 0.9.8k 25 Mar 2009 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug2: ssh_connect: needpriv 0 debug1: Connecting to 192.168.1.244 [192.168.1.244] port 22312. debug1: Connection established. debug3: Not a RSA1 key file /home/kevin/.ssh/kev_rsa. debug2: key_type_from_name: unknown key type '-----BEGIN' debug3: key_read: missing keytype debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace ... Permission denied (publickey). 

显然有更多的debugging输出,我省略了,我可以根据要求提供。 然而,我确信它不喜欢我的私钥文件。

我也怀疑它是如何将它从机器#1复制到机器#2的。 我将文本从私钥复制/粘贴到闪存驱动器上。 这可能是问题,但是,当我在另一个工作的私钥文件上复制这个方法,并且在原始文件上复制/粘贴一个文件时,它们是相同的。

我一直在为此而苦苦挣扎。 如果我能得到更多关于为什么它不喜欢我的钥匙的信息,我可以修复它。 任何人有任何想法呢? 是否有一些元数据告诉ssh文件实际上是一个RSA密钥

    根据我的经验,两个最常见的基于密钥的身份validation错误是

    1. $HOME/.ssh目录中的权限范围不当
    2. 将公钥复制到远程系统时出错

    文件权限

    OpenSSH做了很多努力来保护你自己。 用户影响最大的方式是通过强制限制谁可以访问本地ssh文件夹。 你真的只想要你,只有你,才能访问目录。 那么,任何人都是0,但是没有什么好办法。 所以你需要做的只是改变你的权限: chmod -R go-rwx ~/.ssh这将除去拥有者(即你)之外的所有用户,删除对.ssh目录下的任何文件的读,写和执行权限。

    授权密钥问题

    包含公钥的文件(通常是$HOME/.ssh/authorized_keys )必须适合SSH的特定forms,以了解如何接受私钥。 每个密钥必须包含至less2个字段

    1. 使用的密钥types(RSA,DSA,RSA1等)

    每个按键及其所有选项和组件部分必须在此文件中每行列出一个。 由于按键往往非常长,所以它们通常会在您的terminal上包装并显示为两行。 这在尝试复制/粘贴时有时会造成严重破坏,因为有时候一个或多个换行符会插入到屏幕上的任何位置。 解决这个问题对于shell初学者来说可能有点棘手。

    尝试运行
    wc -l ~/.ssh/authorized_keys
    这将打印出文件中的行数。 将该数字与您希望在文件中的键的数量进行比较。 如果您只接受这一个密钥,您也可以复制公钥文件,因为它与授权密钥文件的格式相同。 就像是
    scp -p ~/.ssh/kev_rsa.pub remotehost:~/.ssh/authorized_keys
    或者,如果你在同一个系统上有你的公钥,你可以做
    cat ~/.ssh/kev_rsa.pub >> ~/.ssh/authorized_keys

    另外,查看远程主机上的日志文件,看看是否有错误报告。 这些文件很可能是/var/log/secure.log/var/log/auth

    虽然,您可能必须为机器2生成一个新的密钥对来连接到服务器。 通常公钥将列出生成它们的用户和机器名称。 这应该在服务器的authorized_keys文件中显而易见。

    您提供的debugging消息意味着读取私钥文件时假定它实际上是公钥/授权主机文件。 这可能不是一个致命的错误(即使工作连接,我也会收到这样的消息)。 它有关“发售”或“我们发送”的说法吗?

    尝试比较两个服务器之间的sshconfiguration文件。

    即。 像猫/ etc / sshd_config