我正在设置从客户端到服务器的无密码 ssh。
我有两个用户,分别称为user1
和user2
。在客户端和服务器上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-keygen
并ssh-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
以匹配。)