ssh错误是什么意思?


9

这是我的不得已。我一直在努力找出问题所在几个小时。

这是交易:我已经将我的私钥从1号机器复制到2号机器上。#1机器能够使用我的公钥通过ssh连接到服务器,但是当尝试连接到服务器时,#2机器提供以下输出:

$ ssh -vvv -i /home/kevin/.ssh/kev_rsa user@192.168.1.244 -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).

显然还有更多的调试输出已被我省略,我可以根据要求提供。但是,我确信它不喜欢我的私钥文件。

我还怀疑这与我将其从1号机复制到2号机有关。我将文本从私钥复制/粘贴到闪存驱动器上。这可能是问题所在,但是,当我在另一个有效的私钥文件上复制此方法,并对原始文件进行比较时,与复制/粘贴的文件相同,它们是相同的。

我一直在为此苦苦挣扎。如果我能获得更多关于为什么它不喜欢我的钥匙的信息,那么我可以解决。有人对此有任何想法吗?某处是否有一些元数据告诉ssh文件实际上是RSA密钥?


又是什么/var/log/auth.log在服务器上的发言权?
womble

为了清楚起见,来自计算机1的公钥连接到服务器。在计算机2上运行的计算机1的私钥将无法连接到服务器吗?
德鲁(Dru)

我在两台机器上都具有相同的密钥对,并且公用密钥在服务器上。我将客户端计算机1粘贴的密钥复制到服务器,这里没有问题,客户端计算机1连接到我的家用计算机(计算机2),该计算机存在此身份验证问题。
凯文

@womble,不幸的是,我无法访问服务器,如果我能弄清楚这一点,我将可以ssh进入。.Ahh,讽刺...;)
kevin

两台客户端计算机上的操作系统是什么?私钥的传输可能会在换行符之前插入行尾或引入的文本(可能是空白行或空格)吗?
Stobor 2011年

Answers:


7

以我的经验,两个最常见的基于密钥的身份验证错误是

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

文件权限

为了保护您自己,OpenSSH做了很多工作。对用户影响最大的方式是对谁有权访问本地ssh文件夹实施严格限制。您实际上只希望您(也只有您)访问目录。好了,任何uid = 0的人都无法解决。因此,您需要做的就是简单地更改您的权限:chmod -R go-rwx ~/.ssh这将删除除所有者(即you)之外的所有用户对.ssh目录下任何文件的读取,写入和执行权限。

授权密钥问题

包含您的公钥的文件通常$HOME/.ssh/authorized_keys必须适合SSH的非常特定的形式,以了解如何接受私钥。每个密钥必须至少包含2个字段

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

在此文件中,每行及其所有选项和组成部分必须在每行中列出一个。由于按键往往很长,因此它们通常会缠绕并在终端上显示为两行。尝试复制/粘贴时,这有时会造成严重破坏,因为有时,只要屏幕上的所有换行处都会插入一个或多个换行符。对于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


1
嗨,谢谢您在这里的努力。我对此表示感谢。绝对不是权限问题。我已验证权限正确。(我应该补充一点,作为警告)。另外,尽管我现在无法访问原始密钥,但是我已经复制了用于复制正在使用的密钥的过程。我什至做了一个md5sum来验证文件是否相同。合理?
凯文

1
同样,我无法访问服务器。整个问题有点...;)
凯文

@Scott:make a copy of the private key file应该是公共密钥(如您的示例所示)
mlp

0

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


2
我的印象是它忽略了这些内容,它们只是注释,可帮助您在查看authorized_keys时识别它们。无论如何,我还是只是复制/粘贴了密钥。因此它们是相同的。我严重怀疑它会检查您的主机名。如果是这样,我可以轻松地更改它。到底是什么,我还是会尝试...
kevin

0

您给出的调试消息意味着在假定私钥文件实际上是公钥/授权主机文件的情况下读取私钥文件。这可能不是致命错误(即使对于正常的连接,我也会收到此类消息)。它对“提供”或“我们发送”有什么说法吗?


-3

尝试比较两个服务器之间的ssh配置文件。

即。类似于cat / etc / sshd_config


我应该更清楚了。有两个客户端,一个服务器。我无法访问服务器或其他客户端计算机。一旦该死的密钥通过身份验证,我就可以访问服务器;)
kevin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.