无法 chroot 用户

无法 chroot 用户

我的 ssh 服务器已经正常工作了 4 年,所以我只想添加一个用户 + chroot 他到特定文件夹。

> useradd -m -c /home/thomas -s /bin/sh thomas
> passwd thomas
> chmod 755 /home/thomas
> chown root: /home/thomas
> service ssh restart

当我这样做时,我连接通过ssh并且我的sftp连接有效。问题是我想 chroot 到特定文件夹。

> vim /etc/ssh/sshd_config

在文件末尾添加:

Match user thomas
    ChrootDirectory /home/%u

当我只添加这个时,这不应该改变什么,对吧?配置应该是相同的,我仍然应该能够连接或使用 sftp...所以我重新启动,service ssh restart并且无法再与 sftp 连接。

万一:

root@xx:/etc/nginx/sites-enabled# /usr/sbin/sshd -v
sshd: illegal option -- v
OpenSSH_6.0p1 Debian-4+deb7u6, OpenSSL 1.0.1t  3 May 2016
usage: sshd [-46DdeiqTt] [-b bits] [-C connection_spec] [-c host_cert_file]
            [-f config_file] [-g login_grace_time] [-h host_key_file]
            [-k key_gen_time] [-o option] [-p port] [-u len]
root@xx:/etc/nginx/sites-enabled#

我究竟做错了什么?

答案1

sshd_config手册指出

必须ChrootDirectory包含支持用户会话所需的文件和目录。对于交互式会话,这至少需要一个 shell(通常为sh(1))和基本/dev节点(例如null(4)zero(4)stdin(4)stdout(4)stderr(4)tty(4)设备)。对于使用 SFTP 的文件传输会话,如果使用进程内 sftp 服务器,则不需要额外的环境配置,但使用日志记录的会话可能需要/dev/log在某些操作系统上的 chroot 目录中(请参阅sftp-server(8)参考资料)。

您应该创建该dev目录,然后将/dev/MAKEDEV脚本复制到那里。使用脚本创建所需的设备文件。

对于交互式用户,您还需要在 chroot 中安装必要的二进制文件和关联的库。

对“进程内 sftp 服务器”的引用意味着ForceCommand internal-sftp应该在您的块中使用Match

注意:摘录自 OpenSSH 7.5,因为我无权访问任何较旧的 SSH 实现。

相关内容