我有一个系统正在尝试使用 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 目录及其文件的权限非常讲究。
这是列出了权限的众多链接中的一个。
答案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