允许使用 chrooted 目录的 SFTP 和 SSH

允许使用 chrooted 目录的 SFTP 和 SSH

我正在尝试设置具有 SFTP 访问权限和有限 SSH 访问权限的用户。因此,我已 chroot 该用户,然后基本上按照本教程。但是,虽然我可以成功通过 ssh 进入服务器,但当我尝试通过 SFTP 连接时,它只是显示连接失败。

研究并尝试修复

我尝试寻找任何可以解释如何做到这一点的东西,但我只能找到这个话题没有任何答案。此外,我在网上找不到任何文章来说明如何做到这一点。

我还尝试将整个文件夹复制/bin/libchrooted 目录中,以确保没有任何可能导致其失败的缺失命令。查看/var/log/auth.log没有结果,包括因为唯一的日志是用户关闭了连接,包括当我设置时LogLevel Debug2/etc/ssh/sshd_config尝试使用 WinSCP 中的 SCP 连接进行连接允许我查看文件,但我无法将任何内容复制到我的本地驱动器,反之亦然

SSHD 配置文件(相关部分):

Match User test_user
    ChrootDirectory /home/test_user

答案1

最终,我找到了一种jailkit可以自动监禁用户的工具,而不是像我最初尝试的那样手动执行。

为了设置 chrooted 目录,我使用了以下步骤

安装(在 Ubuntu 上) 可以找到从源代码安装这里

sudo apt install jailkit

目录设置

可以在 找到允许访问的各种软件包的列表/etc/jailkit/jk_init.ini。我在设置好 git 后也以这种方式安装了它

sudo chown root:root /srv/test_user
sudo jk_init -v /srv/test_user netutils basicshell jk_lsh openvpn ssh sftp

一般格式如下

sudo chown root:root <chroot_directory>
sudo jk_init -v <chroot_directory> <packages>

监禁用户

sudo jk_jailuser -m -j /srv/test_user test_user

更换外壳

最后,应将 中指定的 shell<chroot_directory>/etc/passwd从 更改为/usr/sbin/jk_lsh/bin/bash请注意,应该只包含 test_user、root 和可能的另一个登录名的条目

从那里,您可以通过 ssh 或 sftp/scp 登录并按预期访问所有内容。请注意,要通过公钥登录,您需要设置~/.ssh/authorized_keys文件

相关内容