我知道 sshd 会拒绝连接目录所有权或模式错误,但是否存在与用户主目录位置相关的其他静默检查和故障?或者该分区存在某些配置问题?
使用 CentOS 版本 6.3(最终版)
我正在尝试在一个大分区上设置一个新用户 git 及其主目录,但 sshd 似乎悄然失败了。
这是我的顺序:
- 添加新用户
- 使用已知公钥设置 .ssh/authorized_keys
- 从远程主机进行 ssh
如果我在 /home/git 中设置新用户,那么一切都会正常工作,但如果我在不同分区上为用户设置主文件夹,那么 sshd 似乎会悄悄失败。
# userdel -r git
# useradd -m -d /home/git -c "Git Test" -s /bin/bash -g users git
# su -l git
# mkdir .ssh
# chmod 700 .ssh
# cp /tmp/authorized_keys .ssh
这工作得很好,但如果我将 useradd 行更改为:
useradd -m -d /space/git -c "Git Test" -s /bin/bash -g users git
有了LogLevel Verbose
,身份验证日志中唯一的消息是:
Connection from XX.XX.XX.XX port 50774
Failed publickey for git from XX.XX.XX.XX port 50774 ssh2
Connection closed by XX.XX.XX.XX
通过-vvv到 ssh 显示:
debug1: Offering public key: <USER>/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
更新:显示所有权:
# ls -l /space/git
drwx------. 5 git users 4096 Mar 7 17:43 .
drwxr-xr-x. 7 root root 4096 Mar 7 17:39 ..
drwx------. 2 git users 4096 Mar 7 17:40 .ssh
/home 上的所有权相同
答案1
您在 之外创建了一个用户主目录/home
,因此 SELinux 对您的意图一无所知,拒绝对其访问。
要解决该问题,请为主目录设置永久的 SELinux 上下文,然后重新标记文件。
semanage fcontext -a -t user_home_t "/space/git(/.*)?"
restorecon -r -v /space/git
(顺便提一句,/srv
是此类内容的首选目录,而不是/space
。)