OpenSSH服务器拒绝接受密钥身份验证


13

我尝试在新服务器上使用公钥身份验证,但遇到了此问题。

$ ssh -v -i .ssh/server 192.168.1.100
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data .ssh/config
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.1.100 [192.168.1.100] port 22.
debug1: Connection established.
debug1: identity file .ssh/server type -1
debug1: identity file .ssh/server-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.8p1 Debian-1ubuntu3
debug1: match: OpenSSH_5.8p1 Debian-1ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '192.168.1.100' is known and matches the RSA host key.
debug1: Found key in .ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: .ssh/server
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password

然后我必须输入密码才能登录。

但是,如果我已经有一个会话连接到该服务器(通过密码连接),则以下连接将使用密钥身份验证来避免输入密码。

如果尚未建立SSH连接,那么没有输入密码就无法连接。

这对我来说真的很奇怪,我检查了/usr/sbin/sshd新服务器和其他普通服务器之间的MD5,是一样的。然后,我仅将其/etc/ssh/sshd_config从其他普通服务器复制到新服务器,然后运行service ssh restart。问题仍然存在。

我应该如何解决呢?

Answers:


10

检查.ssh所有者计算机上的文件夹及其中的文件是否只能由所有者(chmod -R 600 .ssh)读取,并且所有者对于该文件夹和文件是否正确(chown如有必要,请使用命令)。

还要检查authorized_keys服务器上的文件夹和文件(可能在/root/.ssh试图登录的用户的主文件夹中),以确保以相同的方式设置其权限和所有者。


编辑:基于更多的反馈(和一些猜测!)-您可以检查/etc/ssh/sshd_config并查看是否按以下方式设置了以下参数。如果不是,请尝试对其进行编辑。

AuthorizedKeysFile /home/%u/.ssh/authorized_keys

请注意,这假设您没有以root身份远程登录


我的.ssh是700,.ssh中的文件是600,我仔细检查了远程计算机中的〜/ .ssh / authorized_keys。安装系统后,我要做的第一件事就是设置公共密钥身份验证,因此它不会被其他操作弄乱。顺便说一句,问题仍然存在..
lxyu 2011年

好的-我正在基于此添加一些内容。
Linker3000

有一行“ #AuthorizedKeysFile%h / .ssh / authorized_keys”。我尝试将其注释掉,但没有用..btw,相同的“ / usr / sbin / sshd”和相同的“ sshd_config”,它们的行为如何不同?
lxyu 2011年

最后,我重新安装了ubuntu,然后在一分钟内设置了openssh-server,现在它可以正常工作了……仍然不知道出了什么问题。:(
lxyu 2011年

有时很难找出问题所在。我曾经将authorized_keys拼写为auhorized_keys。我花了大约一个小时来解决这个问题。您看到拼写错误了吗?这真的很棘手!:-)
2012年

4

我通过id_rsa.pub从.ssh中删除来解决此错误。

id_rsa从另一台计算机复制并分发给了几个虚拟客户端。因此,id_rsaid_rsa.pub实际上是id_rsa完全阻止使用的不同密钥。

没有错误消息可以清楚地表明这一点。我实际上是偶然地弄清楚了,试图使不同的机器进入相同的状态。


3

根据我的发现,目标公司内政主管的最低许可是750。如果世界不那么重要0,它将行不通。

例如。用于根目录:

drwxr-x--- 3 root root 4096 Jul 20 11:57 root

接下来是 /root/.ssh

drwx------  2 root root  4096 Jul 17 03:28 .ssh

然后 /root/.ssh/authorized_keys

-rw------- 1 root root 1179 Jul 17 03:28 authorized_keys


2

经过很多麻烦之后,我得到了问题的解决方案:

用户的主目录不应具有权限777或世界可写性。在这种情况下,SSH密钥验证将失败,您必须输入密码才能登录。



1

如果您/etc/ssh/sshd_config的以下行未注释,则您的SSH配置仅允许将固定的用户列表ssh进入系统,并且您需要向列表中添加任何新帐户:

AllowUsers root user1 user2 user3

除了上面列出的尝试通过SSH登录的用户外,其他任何用户都将收到此错误消息:

Roaming not allowed by server

0

我发现,在改变我的用户和组名(但不是标识)后/etc/passwd/etc/group,但忘了改变/etc/shadow。因此,我得到了同样的“无漫游允许”的消息。

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.