使用 rsa 密钥的 ssh 要求输入密码

使用 rsa 密钥的 ssh 要求输入密码

我有一台运行 Ubuntu 14.04 x64 操作系统的服务器。

我的文件的一部分sshd_config整个文件):

Port 2202
Protocol 2
PermitRootLogin without-password
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      /etc/ssh/keys/%u/authorized_keys
RhostsRSAAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
#PasswordAuthentication yes
UsePAM yes

在文件夹中,/etc/ssh/keys每个系统用户都有自己的文件夹,其中包含authorized_keys文件:

ls -l /etc/ssh/keys
drw------- 2 test.com  test.com   4096 Nov 20 06:53 test.com
drw------- 2 root      root       4096 Nov 20 02:29 root

这些authorized_keys文件的权限是正确的:

ls -l /etc/ssh/keys/*
/etc/ssh/keys/test.com:
total 4
-r-------- 1 test.com test.com 960 Nov 20 07:17 authorized_keys

/etc/ssh/keys/root:
total 4
-r-------- 1 root root 395 Nov 20 02:29 authorized_keys

我在 root 和 test.com 的authorized_keys 文件中有相同的公共 id_rsa 。
我可以通过 ssh 使用 root 登录,但使用 test.com 时,系统会提示我输入密码。

以下是尝试与 test.com 用户连接时的调试信息:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/Ivan/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /Users/Ivan/.ssh/id_dsa
debug1: Next authentication method: password

当我尝试使用 root 登录时,我成功了:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/Ivan/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).

我用谷歌搜索了很多东西。找不到任何可以解决我的问题的东西。

我有一个使用命令创建系统用户的脚本useradd,默认情况下这些用户没有密码。我发现没有密码的系统用户可能无法通过ssh登录,所以我给test.com用户添加了密码。没用。

我看到这UsePAM yes可能是个问题。我将其设置为UsePAM no.没用。

是的,我service ssh restart在每次更改文件后都这样做了sshd_config

我想我已经尝试了一切,但现在我却一无所知。

任何帮助将不胜感激!

答案1

我遇到了同样的问题,发现 SELinux/usr/bin/sshd在尝试远程访问某些用户时阻止了读取访问。通常适用于在/home/.你可以运行

cat /var/log/messages | grep -i ssh

在目标服务器上,您应该会看到类似的行指示错误:

<Date/Time> <hostname> python: SELinux is preventing /usr/sbin/sshd from read access on the file authorized_keys.#012#012*****  Plugin catchall (100. confidence) suggests   **************************#012#012
If you believe that sshd should be allowed read access on the authorized_keys file by default.#012Then you should report this as a bug.#012
You can generate a local policy module to allow this access.#012Do#012allow this access for now by executing:#012# 
ausearch -c 'sshd' --raw | audit2allow -M my-sshd#012# semodule -i my-sshd.pp#012`

您可以编辑 SELinux 权限以允许 ssh 连接,或者干脆将其关闭(安全性较低)来解决此问题。

答案2

sshd 在权限方面非常挑剔!

看来是目录权限/etc/ssh/keys/test.com/不对!当前该目录是读/写的,但可能无法进入。 chmod u+x /etc/ssh/keys/test.com/ && chmod o+rx /etc/ssh/keys 应该可以解决你的问题。虽然 root 可以进入该目录,但我假设 sshd 检查authorized_keys文件本身的八进制权限为07000755+ 。0600特别是,当StrictMode yes.

如果没有目录的访问权限和适当的权限,则 sshd 出于安全考虑将无法读取或忽略authorized_keys 文件。

答案3

ls -l /etc/ssh/keys
drw------- 2 test.com  test.com   4096 Nov 20 06:53 test.com
drw------- 2 root      root       4096 Nov 20 02:29 root

没有x该目录的权限=没有权限实际使用任何事物里面目录。有了这些权限,sshd将能够获取 的目录列表,/etc/ssh/keys/test.com/但无法访问 的内容/etc/ssh/keys/test.com/authorized_keys

对于root,它有效是因为root可以访问任何内容。

相关内容