当考虑接受密钥时,sshd是否进行文件系统检查?

我知道,sshd将拒绝所有权或目录模式的连接,但有没有其他一些无声的检查和失败的用户的主目录的位置? 或者该分区的一些configuration问题?

使用CentOS版本6.3(最终)

我试图设置一个新的用户,git,在一个大的分区上的主目录,但sshd似乎默默地失败。

这是我的序列:

  1. 添加新用户
  2. 用已知的公钥设置.ssh / authorized_keys
  3. 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 ,auth日志中唯一的消息是:

 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的所有权是相同的

你在/home之外创build了一个用户主目录,所以SELinux对你的意图一无所知,拒绝访问它。

要解决该问题,请为主目录设置一个永久的SELinux上下文,然后重新标记这些文件。

 semanage fcontext -a -t user_home_t "/space/git(/.*)?" restorecon -r -v /space/git 

(顺便说一句, /srv是这种事情的首选目录,而不是/space 。)