在 Fedora 16 上,
我将我的公钥复制到 /home/user/.ssh/authorized_keys 文件,用户来自 ldap。
但是如果没有密码,则无法通过 ssh 对该用户进行身份验证。
它对 root 有效。
sshd 上的 strace
[pid 24834] setgroups(1, [1100]) = 0
[pid 24834] getgroups(0, NULL) = 1
[pid 24834] getgroups(1, [1100]) = 1
[pid 24834] setgroups(1, [1100]) = 0
[pid 24834] setresgid(-1, 1100, -1) = 0
[pid 24834] setresuid(-1, 1040, -1) = 0
[pid 24834] open("/home/user/.ssh/authorized_keys", O_RDONLY|O_NONBLOCK) = -1 EACCES (Permission denied)
- 我尝试使用用户帐户访问该文件:没有问题。
- 我尝试用一个具有上述相同选项的小型 C 程序进行尝试:没有问题。
- 我尝试了 777 正确:没有问题。
ls -l
在authorized_keys文件上:
-rw-r--r--. 1 user user 784 19 nov. 16:24 authorized_keys
- 我尝试禁用 StrictMode(并重新启动 sshd)
我与其他 Fedora 16 进行了比较:
- 相同的操作系统
- 相同的 sshd_config 文件
- 相同的权限
~/
,~/.ssh/
并且~/.ssh/authorized_keys
现在,我不知道该如何尝试解决这个问题。
答案1
可能是 SE Linux。如果文件上下文不正确,则运行此文件应该root
可以修复。
restorecon -Rv /home/user/.ssh
还要检查权限/home/user/.ssh
是否完全开放。SSHD 对此非常讲究。
chmod 0700 /home/user/.ssh
答案2
我遇到了类似的问题,在我的案例中,原因是 .ssh 目录和 .ssh/authorized_keys 文件的所有权错误。要修复此问题,请以 root 身份在 /home/user 中执行:
chown user:user .ssh
chown user:user .ssh/authorized_keys
答案3
你的authorized_keys
文件应该具有权限rw-------
。运行:
chmod 600 ~/.ssh/authorized_keys
需要注意的是,客户id_rsa
端上的私钥(通常)应该具有相同的权限。
答案4
进一步了解 fredden 的回答(我没有足够的声誉来评论),我在 RHEL 7 上遇到了类似的问题,LogLevel DEBUG3
在 sshd_config 中设置(并重新启动 sshd 服务)后,我在 /var/log/secure 中得到了以下内容:
datetime servername sshd[11180]: debug1: Could not open authorized keys '/authorized_keys/authorized_keys': Permission denied
尽管文件夹和文件具有正确的权限(分别为 700 和 600)。
如果您怀疑可能是 SElinux(我的是 SElinux),您可以通过查看 /var/log/audit/audit.log 并搜索文件名(在本例中为 authorized_keys )来检查。如果这是罪魁祸首,您将找到一个 type=AVC 的拒绝条目。
我只是将 SELinux 设置为宽容模式,这可能不是最好的方法,但时间很短,它解决了这个问题。我没有尝试,restorecon -Rv /home/user/.ssh
因为直到后来我才意识到这是相关的(一开始没有意识到是 SELinux 导致了问题)。