SSH 和主目录权限

act*_*ato 64 ssh permissions

我用我学校服务器上的一个班级帐户解决这个 SSH 问题花了我几个小时。

我无法在不输入密码的情况下通过 ssh 进入一个特定的班级帐户,而无密码身份验证可与我的其他班级帐户一起使用。.ssh/ 目录及其所有内容与其他类帐户具有相同、正确的权限。

原来问题是在我自己的主目录上设置的权限。当我的 HOME 目录的权限设置为 770(无论为 .ssh/ 设置的权限如何)时,无密码身份验证不起作用,但它在权限设置为 755 或 700 时有效。

有谁知道为什么 SSH 会这样做?是不是因为主目录权限太宽松了?当主目录设置得比 700 更宽松时,为什么 SSH 拒绝使用公钥/私钥进行身份验证?

Geo*_*e M 69

这是 SSH 的默认行为。它通过强制保护用户的密钥rwx------对$HOME/.ssh,并确保只有所有者具有写权限$HOME。如果各自所有者以外的用户对该$HOME目录具有写入权限,则他们可能会恶意修改 上的权限$HOME/.ssh,从而可能劫持用户密钥known_hosts或类似的东西。总之,以下权限$HOME足以让 SSH 正常工作。

  • rwx------
  • rwxr-x---
  • rwxr-xr-x

SSH 将无法正常工作,并且如果目录中存在任何变化g+w或o+w存在任何变化,则会向日志设施发送警告$HOME。但是,管理员可以通过StrictModes no在sshd_config(或类似的)配置文件中定义来覆盖此行为,但应该明确的是,不建议这样做。

  • 感谢您提到“StrictModes no”。在我的设置中,在目标用户的主目录和所有后代上配置了 ACL,以允许半特权用户 (`u:operator:rwx`) 进行修改,而 SSH 不喜欢这样。 (2认同)

jip*_*pie 32

主目录上的 77x 意味着拥有正确 GID 的每个人都可以移动您的 .ssh 目录并将其替换为另一个目录。具有正确 GID 的用户对主目录具有写入/执行权限,因此可以重命名/创建文件/目录。

SSH 在权限方面非常挑剔,它应该如此。