openssh chroot 终止 ssh 连接

Mar*_*sen -1 ssh debian-wheezy

我有一个 Debian Wheezy 服务器,当他们通过 openssh 服务器登录时,我想在其中 chroot 某些用户。但是,我遇到了一个奇怪的错误:出于测试目的,我只是添加了

ChrootDirectory /data/
Run Code Online (Sandbox Code Playgroud)

到我的 sshd_config 文件(并重新启动服务器)

当我尝试通过 putty 登录时,窗口只是关闭而没有错误消息。当我尝试将 openssh-client 从服务器用于自身时,我收到此错误:

ssh testuser@localhost
testuser@localhost's password:
Last login: ....
/bin/bash: No such file or directory
Connection to localhost closed
Run Code Online (Sandbox Code Playgroud)

/data/ 目录归 root:root 所有,有 755 个权限。如果我尝试添加具有相同权限的 /data/testuser 目录,则会发生相同的错误。

在 auth.log 中没有任何尝试的痕迹。

如果我从 sshd_config 中删除 chroot 行并重新启动服务器,我可以通过 putty 和 openssh-client 正常登录。

为什么我收到这个错误?我不明白。

use*_*517 7

这是正常的,并且在您配置 chroot 时可以预期。您真正需要做的是花一些时间了解您正在使用的工具。特别是 chroot 是什么以及它是如何工作的,这与您的想法明显不同。维基百科的这段摘录解释了您所看到的问题,并为您提供进一步研究的见解。

Unix 操作系统上的 chroot 是更改当前运行进程及其子进程的明显根目录的操作。在这种修改过的环境中运行的程序不能命名(因此通常不能访问)指定目录树之外的文件。