如果远程用户的主文件夹位于 /home2 而不是 /home 下,则无密码 ssh (ssh-copy-id) 不起作用

如果远程用户的主文件夹位于 /home2 而不是 /home 下,则无密码 ssh (ssh-copy-id) 不起作用

我正在设置从客户端到服务器的无密码 ssh。

我有两个用户,分别称为user1user2。在客户端和服务器上user1都有一个主文件夹/home/user1,即使用命令创建帐户时的默认文件夹useradd user1

在客户端和服务器上,user2都有一个位于 /home2/user2 的主文件夹。这是通过使用命令创建用户来完成的 useradd -m -d /home2/user2 user2。原因是,我安装/home2在更大的 16TB 磁盘上,并希望在其主文件夹中为 user2 提供更多存储空间。

我根据所有建议进行设置。我将/home2/home2/user2、 和设置/home2/user2/.ssh为正确的 700 权限。

我发现,在所有这些之后,无密码 ssh 适用于user1从客户端到服务器,但不适用于user2.我在客户端向服务器申请ssh-keygenssh-copy-id使用后,它仍然要求输入密码。user2

这让我很困惑。这是否意味着主文件夹user2必须/home/user2且不能位于其他位置(例如/home2/user2)?不幸的是,我的文件夹只有 100GB /home,我想要更多的空间user2

为了响应更多信息的请求,/var/log/messages在从客户端发出自动登录后,我刚刚查看了服务器 ssh 日志 ( )。日志是这样说的:

Jan 20 09:42:55 SERVER dbus-daemon[2502]: [system] Activating service name='org.fedoraproject.SetroubleshootPrivileged' requested by ':1.39048' (uid=977 pid=2794759 comm="/usr/libexec/platform-python -Es /usr/sbin/setroub" label="system_u:system_r:setroubleshootd_t:s0") (using servicehelper)
Jan 20 09:42:55 SERVER dbus-daemon[2502]: [system] Successfully activated service 'org.fedoraproject.SetroubleshootPrivileged'
Jan 20 09:42:58 SERVER setroubleshoot[2794759]: SELinux is preventing /usr/sbin/sshd from read access on the file authorized_keys. For complete SELinux messages run: sealert -l 6b9fec5b-5b03-460b-8199-393d5863256b
Jan 20 09:42:58 SERVER setroubleshoot[2794759]: SELinux is preventing /usr/sbin/sshd from read access on the file authorized_keys.#012#012*****  Plugin catchall_labels (83.8 confidence) suggests   *******************#012#012If you want to allow sshd to have read access on the authorized_keys file#012Then you need to change the label on authorized_keys#012Do#012# semanage fcontext -a -t FILE_TYPE 'authorized_keys'#012where ...`

请帮我解决这个问题。

答案1

服务器使用哪个 Linux 发行版,是否使用 SELinux(使用 进行检查sestatus)?

如果是这样,您还需要执行以下操作:

semanage fcontext -a -t home_root_t '/home2'
semanage fcontext -a -t user_home_dir_t '/home2/[^/]+'
semanage fcontext -a -t user_home_t '/home2/[^/]+/.+'
restorecon -rv /home2

/home2为、其下的实际用户主目录以及目录下的用户文件分配适当的 SELinux 标签/home2/<username>

(示例标签适用于 RHEL9:旧版本的 SELinux 标签结构可能略有不同。如果不确定,请使用 来ls -ldZ /home; ls -lZ /home验证下的现有标签/home并调整上的标签/home2以匹配。)

相关内容