Malfist Asked: 2009-07-14 09:12:09 +0800 CST2009-07-14 09:12:09 +0800 CST 2009-07-14 09:12:09 +0800 CST 如何chroot ssh 连接? 772 我想为大多数(不是所有)通过 SSH 登录的用户设置一个 chroot 监狱。我听说使用最新版本的 openssh 是可能的,但我无法找到如何做到这一点。操作方法都在谈论修补旧版本,并且该补丁不再可用。 我正在运行debian etch。 debian security ssh chroot 5 个回答 Voted Best Answer cstamas 2009-07-14T09:50:18+08:002009-07-14T09:50:18+08:00 我为此目的使用 rssh。 你是对的,有一种新的方法可以做到这一点,它是最近 ssh 版本的内置功能。 这是一篇关于Undeadly的文章。 Marie Fischer 2009-07-18T13:04:32+08:002009-07-18T13:04:32+08:00 我只需要设置一个能够通过 ssh 和 ssh 登录到另一台服务器(不直接连接到外部世界)的用户。cstamas 和 ericmayo 的链接是一个好的开始。 基本上,我在 /etc/ssh/sshd_config 中添加了以下内容: 匹配用户 myuser Chroot 目录 /chroot/myuser 从那时起,我只需要在 /chroot/myuser 下创建 chroot 环境。我复制了 /bin/bash 和 /usr/bin/ssh 以及他们需要的共享库(ldd 将显示这些)。对于更大的环境,编译所需可执行文件的静态链接版本可能是有意义的。 Bash 立即工作,为了让 ssh 工作,我还必须创建 .ssh 目录,复制 /etc/passwd、/etc/nsswitch.conf 和 /lib/libnss_* 并创建 /dev/null、/dev/tty 和/dev/urandom 通过 mknod。 Soham Chakraborty 2012-10-09T05:26:35+08:002012-10-09T05:26:35+08:00 mkdir /chroot mkdir -p /chroot/home/<user_name> mkdir /chroot/home/<user-name>/bin cp -pr /bin/bash /chroot/home/<user_name>/bin/. cp -pr /bin/ls /chroot/home/<user_name>/bin/. cp -pr /lib64 /chroot/home/<user_name>/. 您必须编辑 /etc/sshd_config 文件并添加 ChrootDirectory /chroot/%h 并重新启动 sshd 守护进程。 综上所述,老实说,我认为 sftp 是一个更好的选择。 另外,如果有帮助,我发现了这个网址。 http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229 UloPe 2009-07-14T09:18:26+08:002009-07-14T09:18:26+08:00 如果您使用公钥认证,您可以使用授权密钥中的“命令”选项来设置 chroot 监狱。 ~/.ssh/authorized_keys: command="/path/to/the/chroot/script" ssh-dss keydata.....keydata... user@host hdanniel 2009-07-14T09:29:03+08:002009-07-14T09:29:03+08:00 据我所知,新版本的 OpenSSH 只允许 chroot 进行 SFTP 连接。我试过了,它有效。但是对于 SSH,可用的解决方案是 chrootssh 补丁。我浏览了 SourceForge 站点,但没有文件,所以我认为已停产。 对于 Debian Etch,这里有一些文件:http: //debian.home-dn.net/etch/ssh/ 这里还有其他解决方案:http: //www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.en.html,包括 chrootssh 。
我为此目的使用 rssh。
你是对的,有一种新的方法可以做到这一点,它是最近 ssh 版本的内置功能。
这是一篇关于Undeadly的文章。
我只需要设置一个能够通过 ssh 和 ssh 登录到另一台服务器(不直接连接到外部世界)的用户。cstamas 和 ericmayo 的链接是一个好的开始。
基本上,我在 /etc/ssh/sshd_config 中添加了以下内容:
从那时起,我只需要在 /chroot/myuser 下创建 chroot 环境。我复制了 /bin/bash 和 /usr/bin/ssh 以及他们需要的共享库(ldd 将显示这些)。对于更大的环境,编译所需可执行文件的静态链接版本可能是有意义的。
Bash 立即工作,为了让 ssh 工作,我还必须创建 .ssh 目录,复制 /etc/passwd、/etc/nsswitch.conf 和 /lib/libnss_* 并创建 /dev/null、/dev/tty 和/dev/urandom 通过 mknod。
您必须编辑 /etc/sshd_config 文件并添加
并重新启动 sshd 守护进程。
综上所述,老实说,我认为 sftp 是一个更好的选择。
另外,如果有帮助,我发现了这个网址。
http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229
如果您使用公钥认证,您可以使用授权密钥中的“命令”选项来设置 chroot 监狱。
~/.ssh/authorized_keys:
据我所知,新版本的 OpenSSH 只允许 chroot 进行 SFTP 连接。我试过了,它有效。但是对于 SSH,可用的解决方案是 chrootssh 补丁。我浏览了 SourceForge 站点,但没有文件,所以我认为已停产。
对于 Debian Etch,这里有一些文件:http: //debian.home-dn.net/etch/ssh/
这里还有其他解决方案:http: //www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.en.html,包括 chrootssh 。