我有一些用户的 $HOME 目录与/home/
.
用户主页位于/pkg/home
并且/pkg
所有者是不同的用户,但所有用户都具有对 的组访问权限/pkg
。 SSHD 似乎会限制对authorized_keys
(eg /pkg/home/usera/.sshd/authorized_keys
) 的访问,因为用户不是完整路径的所有者。
是否有任何选项可以sshd_config
更改此限制?
答案1
要么全有,要么全无:如果您关闭该StrictModes
选项,sshd 将永远不会检查任何文件模式。没有办法说某些奇怪的情况是可以的,例如组可写目录(如果用户单独在组中则可以)。
~/.ssh/authorized_keys
OpenSSH向上递归检查其包含的目录的权限和所有权。但是,当到达主目录时,它会停止比较。例如,在授权文件是/home/joe/.ssh/authorized_keys
和/home/joe
是用户主目录的经典安排中,仅/home/joe/.ssh/authorized_keys
检查和/home/joe/.ssh
。/home/joe
因此,虽然您的场景非常可疑(/pkg
应该由 root 拥有,如果需要的话还具有其他组权限),但它不应该影响 ssh。
如果涉及任何符号链接,请注意 ssh 在开始检查之前会扩展所有符号链接。
系统日志可能有相关信息。检查失败的登录尝试是否会导致任何日志消息。
通过在自定义端口 ( sshd -d -p 2222
) 上运行调试模式守护进程,检查您的 ssh 版本是否执行与我的相同的检查(我查看了 OpenSSH 5.5p1 的源代码)。strace -f -efile sshd -d -p 2222
如果需要检查服务器检查哪些文件的权限,请使用。如果这些权限检查不是问题,添加更多-d
标志可能会有所帮助。
如果您有 AppArmor,它也有可能限制 ssh 服务器读取用户的文件.ssh
目录中的文件。如果您的 AppArmor 和主目录位于非标准位置,则需要更新 AppArmor 策略(不仅仅是 SSH)。看Evince 无法启动,因为它无法读取 .Xauthority。
答案2
谁拥有 /pkg/ 并不重要。如果它被拥有,usera
那么你就会遇到问题userb
等。所以它一定是其他东西阻止了 SSHD 使用authorized_keys
文件。您必须检查该文件是否可写仅有的由所有者以及是否由适当的用户拥有。这同样适用于所有父目录。
答案3
我遇到了同样的问题,使用“/data”作为用户目录的基本目录。对我来说,运行“restorecon -R -v ~/.ssh”还不够。首先,我必须跑
# semanage fcontext -a -e /home /data
作为 root,然后(也作为 root,因为 /data 目录包含 root 拥有的目录)
# restorecon -R -v /data
答案4
除了其他答案之外,请确保检查 sshd 日志并在文件夹和文件上设置正确的权限:
$ chown usera /pkg/home/usera
$ chmod go-w /pkg/home/usera
$ chmod 700 /pkg/home/usera/.ssh
$ chmod 600 /pkg/home/usera/.ssh/authorized_keys