我正在尝试在 MacBook Pro 上设置一个仅用于远程的用户帐户,并将其 chrooted 为/chroot/tmux
。我已按照此处概述的步骤进行操作(http://thefragens.com/blog/2011/12/chrootd-sftp-on-mac-os-x-server/),但是当我尝试使用(在我的本地网络上)登录时:
ssh [email protected]
...我立即关闭了连接:
❯ ssh [email protected]
Password:
Connection to 10.0.1.140 closed by remote host.
Connection to 10.0.1.140 closed.
删除此行后/etc/sshd_config
我可以正常登录,但我的tmux
用户不再被 chroot:
Match User tmux
# ...
ChrootDirectory /chroot/tmux # removing this allows me to login
我要做什么才能让它工作?
这是我尝试使用以下命令从客户端登录时输入密码后得到的结果:ssh -vv [email protected]
debug2: input_userauth_info_req
debug2: input_userauth_info_req: num_prompts 0
debug1: Authentication succeeded (keyboard-interactive).
Authenticated to 10.0.1.140 ([10.0.1.140]:22).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: channel 0: free: client-session, nchannels 1
Connection to 10.0.1.140 closed by remote host.
Connection to 10.0.1.140 closed.
Transferred: sent 1872, received 1880 bytes, in 0.0 seconds
Bytes per second: sent 100689.1, received 101119.4
debug1: Exit status -1
令人鼓舞的是,Mac 的控制台报告了这一点:
6/15/12 9:57:42.679 AM sshd: fatal: bad ownership or modes for chroot directory "/chroot/tmux"
我当前的目录权限:
~ ❯ ls -al /chroot/tmux
total 8
drwxr-xr-x 7 tmux wheel 238 Jun 14 11:18 .
drwxr-xr-x 3 root wheel 102 Jun 14 10:34 ..
答案1
这里的问题是目录 /chroot/tmux 的所有权和权限。
SSHD 手册页指出:
Chroot目录
Specifies the pathname of a directory to chroot(2) to after authentication. All components of the pathname must be root- owned directories that are not writable by any other user or group. After the chroot, sshd(8) changes the working directory to the user's home directory.
我相信给予 ChrootDirectory 的特定路径(在您的情况下为 /home/tmux)必须是 root:root 并且最多有 755 个权限,看起来您的目录归“tmux”所有。
还要注意,ChrootDirectory 命令最适合与 SFTP 配合使用,因为它不需要特定的 shell,如果您尝试从此目录运行交互式 SSH 命令行会话(和 shell),则需要先将一些文件添加到 chroot,如 sshd_config 手册页中所述:
这Chroot目录必须包含支持用户会话所需的文件和目录。对于交互式会话,这至少需要一个 shell(通常是 sh(1))和基本 /dev 节点,例如 null(4)、zero(4)、stdin(4)、stdout(4)、stderr(4)、arandom(4) 和 tty(4) 设备。对于使用“sftp”的文件传输会话,如果使用进程内 sftp 服务器,则无需对环境进行其他配置,但使用日志记录的会话确实需要 chroot 目录中的 /dev/log(有关详细信息,请参阅 sftp-server(8))。