为什么服务器上的 ssh/sshd 尝试访问 /home/我移动用户主目录后,是否会出现 /.ssh 问题?

为什么服务器上的 ssh/sshd 尝试访问 /home/我移动用户主目录后,是否会出现 /.ssh 问题?

我移动了我的用户主目录,usermod -m -d /path/to/new/home/username它似乎运行良好。

但是,在我的 [已移动] 主目录中,我有一个“.ssh”文件夹,该文件夹设置为允许我使用公钥身份验证从另一台主机连接,而无需密码。从“客户端”工作站连接时,此(无密码公钥身份验证)工作正常,我移动了我的主目录。

man sshd表示authorized_keys文件位置是默认的~/.ssh/authorized_keys,并且我的sshd_config不会覆盖它,因为它AuthorizedKeysFile根本没有设置指令。

每当我从“客户端”连接到主机时,它都会要求输入密码。它不应该这样,它应该直接让我登录,这要归功于公钥认证。我怀疑sshd主机仍然认为我的主目录是/home/<user>,或者在最坏的情况下,坚持将我的用户名添加到某个假定的前缀中,而该前缀不再有效。

有趣的是,如果我生成另一个并使用(与其他命令行相同的命令行,只是添加了)sshd -de -p 23连接到此端口上的主机,它会识别主机上的新主目录路径并直接登录。ssh -p 23 ...-p 23

我尝试使用sshd和重新加载service sshd reload并重新启动service sshd restart,最后甚至重新启动了主机。在sshd要求我输入密码方面没有任何变化。

我从哪里开始调试?我在 CentOS 6.5 x86-64 上。

更新

我现在有强烈的迹象表明这与 SELinux 有关。显然,新主目录的安全上下文是错误的,但这几乎就是我所发现的全部。SELinux 是在没有询问我的情况下安装在系统上的,我对此一无所知(我也不应该知道,因为我没有碰过它,但依靠它来usermod -m -d ...完成它应该做的工作)。

答案1

一种解决方案是修改您的 SELinux 配置,以便 SELinux 了解此上下文中所需的上下文:

semanage fcontext -a -s unconfined_u -t ssh_home_t '/path/to/your/new/home/\.ssh(/.*)?'

这是受到输出的启发semanage fcontext -l | grep ssh,我的系统显示/root也是按照这种方式进行管理的。

请注意,我选择了unconfined_uSELinux 用户 - 如果您打算使用其他用户,例如,如果此主页用于服务,则选择其他用户可能是明智的system_u

相关内容