我正在尝试设置具有 SFTP 访问权限和有限 SSH 访问权限的用户。因此,我已 chroot 该用户,然后基本上按照本教程。但是,虽然我可以成功通过 ssh 进入服务器,但当我尝试通过 SFTP 连接时,它只是显示连接失败。
研究并尝试修复
我尝试寻找任何可以解释如何做到这一点的东西,但我只能找到这个话题没有任何答案。此外,我在网上找不到任何文章来说明如何做到这一点。
我还尝试将整个文件夹复制/bin
到/lib
chrooted 目录中,以确保没有任何可能导致其失败的缺失命令。查看/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
文件