如何限制ssh用户只能浏览/home/%u内容

如何限制ssh用户只能浏览/home/%u内容

我可以仅使用 OpenSSH 配置将用户限制在其 /home/%u 目录中吗?根据我在 Internet 上找到的说明,我停止了 SSH 服务器并将以下内容附加到文件中sshd_config

Match group sftpusers
    ChrootDirectory /home/%u
    X11Forwarding no
    AllowTcpForwarding no

然后我再次启动 SSH 服务器。

仅供参考,我已将用户添加到sftpusers组中

我的用户仍然可以浏览 ie,cd /并且能够使用 cat 命令列出cat /usr/bin/test.sh我系统上整个文件结构中的文件内容 ( )

我正在运行 Ubuntu Server 12.04 LTS。

答案1

首先,我建议使用,ChrootDirectory %h而不是/home/%u, as%h扩展到用户的家,即使它不是/home/$USER

现在解决您的实际问题:您需要强制internal-sftp运行命令。以下配置对我来说效果很好,也应该适合你:

Match group sftp
    ForceCommand internal-sftp
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no

用户的 home 应该是root-owned 的并且有上面提到的 755 权限:

drwxr-xr-x 22 root root 4.0K Nov 24  2011 /home/testuser

答案2

使用fakechroot

  1. 准备要用于 SSH 的用户和目录。例如,您可能想要将某些命令从/bin目录复制到用户的bin目录中。认为用户名为test,用户目录为/home/test

  2. 安装fakechroot包。

    # Debian-based distros
    sudo apt install fakechroot
    
  3. 打开 OpenSSH 服务器配置文件进行编辑(例如/etc/ssh/sshd_config)。

  4. 将以下行添加到配置文件(或替换现有行(如果存在)):

    # Replace test with your user of choice
    Match User test
        ForceCommand fakechroot chroot /home/test
        # Other options
    
  5. 保存文件。在您想要的特定端口上启动 OpenSSH 服务器。现在,尝试通过 SSH 登录。一切都应该按预期进行。

希望能帮助到你!

答案3

我知道这个问题很老了,但这对我有帮助。

chmod o-x /home/*

从 sudo 运行上述命令,它将限制用户到其自己的主目录。

相关内容