将 SSH 和 SFTP 限制到某个文件夹

将 SSH 和 SFTP 限制到某个文件夹

在创建测试用户时,我 99% 确定用户路径将是其主目录,理论上无论如何连接时都看不到其他内容。

我错了,所以在尝试将用户的 SSH 限制到某个文件夹时,我阅读了一些指南和 SE 答案(例如这个)发现他们中的大多数人都指向类似的东西

Match User testuser
    ChrootDirectory /home/testuser
    ForceCommand internal-sftp

但是当我尝试 SSH 时,出现一条错误消息,提示“管道损坏”,但我无法解决。

知道我可以在哪里继续阅读和/或设置吗?

谢谢

答案1

您的问题可能是因为用户的主目录对于相关用户是可写的(测试用户)。 SSH 不允许 chroot 进入(用户)可写目录并终止连接。您的服务器日志中应该有一条日志消息。

sshd_config手册页说的是ChrootDirectory

 ChrootDirectory
         Specifies the pathname of a directory to chroot(2) to after
         authentication.  At session startup sshd(8) checks that all
         components of the pathname are root-owned directories which are
         not writable by any other user or group. ...

您的选择取决于您的要求。您可以将主目录所有者更改为 root 并删除其他写入权限,并将(可写)子目录归用户所有。例如:

mkdir /home/testuser_tmp
mv /home/testuser /home/testuser_tmp/
mv /home/testuser_tmp /testuser_tmp

如果用户还具有 shell 访问权限,您可能应该更新主目录条目以/etc/passwd指向可写子目录。

相关内容