我想为大多数(不是全部)用户通过SSHlogin而设置一个chroot jail。 我听说有可能与最新版本的openssh,但我还没有能够find如何做到这一点。 如何所有人都在讨论修补旧版本,并且修补程序不再可用。
我正在运行debian etch。
我正在使用rssh来达到这个目的。
你是对的有一个新的方法来做到这一点,这是最近的ssh版本的内置function。
这是关于不死的文章。
我只需要设置一个用户,这个用户可以通过ssh和sshlogin到另一个服务器(不直接连接到外部世界)。 cstamas和ericmayo的链接是一个好的开始。
基本上,我将以下内容添加到/ etc / ssh / sshd_config中:
匹配用户myuser ChrootDirectory / chroot / myuser
从那里开始,我只需要在/ chroot / myuser下创buildchroot环境。 我复制了/ bin / bash和/ usr / bin / ssh以及他们需要的共享库(ldd会显示这些库)。 对于更大的环境,编译所需可执行文件的静态链接版本可能是有意义的。
Bash立刻工作,为了ssh工作,我还必须创build.ssh目录,复制/ etc / passwd,/etc/nsswitch.conf和/ lib / libnss_ *并创build/ dev / null,/ dev / tty和/ dev / urandom通过mknod。
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文件和addd
ChrootDirectory /chroot/%h
并重新启动sshd守护进程。
所有人都说,我真的认为sftp是一个更好的select。
另外,我发现这个url,如果它是有帮助的。
如果您正在使用公钥authentication,则可以使用授权密钥中的“command”选项来设置chroot jail。
的〜/ .ssh / authorized_keys中:
command="/path/to/the/chroot/script" ssh-dss keydata.....keydata... user@host
据我所知,新版本的OpenSSH只允许用于SFTP连接的chroot。 我试过,它的工作原理。 但是对于SSH,可用的解决scheme是chrootssh补丁。 我浏览SourceForge网站,并没有文件,所以我认为是停止。
对于Debian Etch这里有一些文件: http : //debian.home-dn.net/etch/ssh/
这里还有其他解决scheme: http : //www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.en.html ,包括chrootssh。