ssh 和主目录权限

Bla*_*ing 6 ssh permissions file-permissions

sshd如果用户的主目录是组可访问的,即使~/.ssh设置为 700 ,也会拒绝接受公钥认证吗?如果权限~/.ssh是可以接受的,为什么权限很~重要?

con*_*use 7

好的,要解决此问题,您可以选择不安全的路由并按照已经提到的方式进行设置StrictModes no/etc/ssh/sshd_config也可以采用复杂的方式将所有用户的 ssh 密钥存储在只能由 root 访问的目录中。这是后者的步骤:

  1. 创建一个目录来保存新密钥。在这里,我们将使用/usr/share/sshkeys,这可能不是最好的地方,而是我能想到的最好的地方。

    sudo mkdir /usr/share/sshkeys
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编辑/etc/ssh/sshd_config以包含该行

    AuthorizedKeysFile /usr/share/sshkeys/%u
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将旧的授权密钥文件从您的用户(此处称为“exampleuser”)复制到新目录

    mv /home/exampleuser/.ssh/authorized_keys /usr/share/sshkeys/exampleuser
    
    Run Code Online (Sandbox Code Playgroud)
  4. (可选但推荐,因为 exampleuser 希望能够以通常的方式添加密钥)将新密钥文件链接到旧密钥文件的位置并授予用户访问新密钥文件的权限

    sudo chown exampleuser /usr/share/sshkeys/exampleuser
    sudo chmod 600 /usr/share/sshkeys/exampleuser
    ln -s /usr/share/sshkeys/exampleuser /home/exampleuser/.ssh/authorized_keys
    
    Run Code Online (Sandbox Code Playgroud)
  5. 重新启动 ssh 守护进程

    sudo service sshd restart
    
    Run Code Online (Sandbox Code Playgroud)


ala*_*and 6

我猜原因是,如果您的主目录可由其他人写入,那么恶意用户可以创建~/.ssh、添加所需的密钥,然后将其权限更改为 700。

即使您已经有了~/.ssh,也可以简单地将其重命名为其他内容并创建一个新的内容。

然而,在现代系统上,这种技巧通常是不可能的,因为chown它只适用于超级用户,但情况并非总是如此:

在早期版本的 UNIX 中,所有用户都可以运行 chown 命令将他们拥有的文件的所有权更改为系统上任何其他用户的所有权。( http://www.diablotin.com/librairie/networking/puis/ch05_07.htm )

chmod 以一种方式或另一种方式运行取决于libc 编译选项,为了安全起见,OpenSSH 服务器有点偏执。