我已经发现我怎样才能 chroot ssh 连接?以及很多不同的博客文章和类似的文章(http://undeadly.org/cgi?action=article&sid=20080220110039,https://unix.stackexchange.com/q/14398/57364等)。我正在使用文章中描述的内部 sftp 子系统。
Subsystem sftp internal-sftp
Match Group www-data
ChrootDirectory %h
AllowTcpForwarding no
我可以连接服务器并进行身份验证,但 SSH 会话立即关闭。
以下是 auth.log 的一部分:
Feb 18 23:36:21 w sshd[358]: Accepted publickey for network from xxx port 50280 ssh2
Feb 18 23:36:21 w sshd[358]: debug1: monitor_read_log: child log fd closed
Feb 18 23:36:21 w sshd[358]: debug1: monitor_child_preauth: network has been authenticated by privileged process
Feb 18 23:36:21 w sshd[358]: debug1: PAM: establishing credentials
Feb 18 23:36:21 w sshd[358]: pam_unix(sshd:session): session opened for user network by (uid=0)
Feb 18 23:36:21 w sshd[358]: User child is on pid 363
Feb 18 23:36:21 w sshd[363]: debug1: SELinux support disabled
Feb 18 23:36:21 w sshd[363]: debug1: PAM: establishing credentials
Feb 18 23:36:21 w sshd[358]: debug1: session_new: session 0
Feb 18 23:36:21 w sshd[358]: debug1: SELinux support disabled
Feb 18 23:36:21 w sshd[358]: debug1: session_by_tty: session 0 tty /dev/pts/1
Feb 18 23:36:21 w sshd[358]: debug1: session_pty_cleanup: session 0 release /dev/pts/1
Feb 18 23:36:21 w sshd[358]: debug1: PAM: cleanup
Feb 18 23:36:21 w sshd[358]: debug1: PAM: closing session
Feb 18 23:36:21 w sshd[358]: pam_unix(sshd:session): session closed for user network
Feb 18 23:36:21 w sshd[358]: debug1: PAM: deleting credentials
怎么了?
编辑:
我在客户端收到以下消息:
/bin/bash: No such file or directory
我不明白为什么这是个问题。
我以为“新”版本的 OpenSSH 已经不再需要复制部分了?
答案1
感觉就像您试图将交互式 shell 关进chroot
监狱。SFTP 子系统与此无关,因为您没有使用 SFTP。
你做需要向 jail 中填充必要的文件,以便允许用户执行 shell。这意味着创建一个/bin
相对于 jail 根目录的目录,并在其中填充一份副本/bin/bash
(以及其他内容)。
这监狱工具实用程序能够自动构建 chroot jail,并且正在积极维护。您可能想在那里查看一下。
如果您喜欢手动执行操作,请查看以下内容(特别是第一个,因为您使用的是 Debian):