使用公钥的 SSH 不起作用

使用公钥的 SSH 不起作用

我有一个系统正在尝试使用 ssh[电子邮件保护]。他们已将公共 RSA 密钥发送给我,我已将其安装到我的 .ssh/authorized keys 文件中。但是,当他们尝试连接时,他们看到“权限被拒绝”。

在我的服务器的安全日志中,我看到找到了匹配的密钥,但它仍然拒绝访问。

有任何想法吗?

更新:

由于昨天急着在一天结束时发布此文,我遗漏了一些重要细节。

首先,也是最重要的一点,多个实体正在使用我这边的同一个用户进行登录。这是一个自动文件存储库,当有人想要连接时,我们会让他们向我们发送其用户和服务器的公钥,然后我会将其添加到我这边用户的 authorized_keys 文件中。这是一个非 root 用户。我们还有其他外部方能够使用 ssh 成功登录。只是远程端的这个新用户不起作用。

日志显示:

Sep  1 15:24:56 SavFTPDNS sshd[31674]: Connection from X.X.X.X port 12857
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: Client protocol version 2.0; client software version OpenSSH_4.0
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: match: OpenSSH_4.0 pat OpenSSH*
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: Enabling compatibility mode for protocol 2.0
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: Local version string SSH-2.0-OpenSSH_4.2
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: PAM: initializing for "userA"
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: PAM: setting PAM_RHOST to "X.X.X.X"
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: PAM: setting PAM_TTY to "ssh"
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: temporarily_use_uid: 504/100 (e=0/0)
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: trying public key file /home/userA/.ssh/authorized_keys
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: matching key found: file /home/userA/.ssh/authorized_keys, line 18
Sep  1 15:24:56 SavFTPDNS sshd[31674]: Found matching RSA key: d2:4f:5e:cb:cf:78:a4:67:19:99:b8:7b:2a:71:9e:61
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: restore_uid: 0/0
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: temporarily_use_uid: 504/100 (e=0/0)
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: trying public key file /home/userA/.ssh/authorized_keys
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: restore_uid: 0/0
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: temporarily_use_uid: 504/100 (e=0/0)
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: trying public key file /home/userA/.ssh/authorized_keys2
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: restore_uid: 0/0
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: do_cleanup
Sep  1 15:24:56 SavFTPDNS sshd[31674]: debug1: PAM: cleanup

答案1

如果您能从日志中复制/粘贴您看到的行,那将会有所帮助。同时进行一些猜测:

确保您的权限正确。

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

如果您尝试以 root 身份进行身份验证,则可能需要在 sshd_config 中添加以下内容:

PermitRootLogin without-password

我在设置 Barracuda 备份系统来备份 FreeBSD 主机时发现了这一点。(在 FreeBSD 上,它位于 /etc/ssh/sshd_config 中。)

答案2

确保 authorized_keys 文件中的密钥中没有换行符 - 我以前也遇到过类似的问题。按下退格键一直回到最后一个 ASCII 字符后,它突然开始工作了。

此外,sshd 对.ssh 目录及其文件的权限非常讲究。

这是列出了权限的众多链接中的一个。

http://www.unixpeople.com/HOWTO/configuring.ssh.html

答案3

sshd_config 文件的副本会很有趣。特别是,sshd 需要将指令 pubkeyauthentication 设置为 yes:

PubkeyAuthentication yes

你可能还想指定 authorized_keys 文件的路径

AuthorizedKeysFile     %h/.ssh/authorized_keys

此外,远程是否尝试连接到您的本地根?在这种情况下,您还应该检查 permitrootlogin。

希望能帮助到你...

答案4

我遇到了同样的问题(CentOS 6.0)。如果 SELinux 已启用,请尝试执行以下操作:

restorecon -R -v /root/.ssh

相关内容