在CentOS 7上创build一个chroot SSH的正确方法

有很多关于如何创build一个chrootSFTP的教程,但是我想使用SSH,因为比起FTP和phpMyAdmin来说,简单的wgetunzipmysqlmysqldump要快得多。 该方法也应该是干净的(没有手动ldd魔法)和可扩展的,所以我可以轻松地添加和升级包。

幸运的是,我能够想出办法做到这一点。

第1步:为chrooted用户添加一个组

 groupadd chrootusers 

步骤2:configurationSSH

 nano /etc/ssh/sshd_config 

更换

 Subsystem sftp /usr/libexec/openssh/sftp-server 

 Subsystem sftp internal-sftp 

粘贴在最后

 Match Group chrootusers ChrootDirectory /home/%u 

 systemctl restart sshd systemctl status sshd 

第3步:添加一个用户

改变peter到你想要的用户名。

 export NEW_USER_NAME=peter useradd ${NEW_USER_NAME} usermod -G chrootusers -d / ${NEW_USER_NAME} passwd ${NEW_USER_NAME} 

第4步:安装软件包并创build必要的目录结构

 yum --installroot=/home/${NEW_USER_NAME} --releasever=7 --nogpg --disablerepo='*' --enablerepo=base install centos-release openssh-clients wget vi nano zip unzip tar mariadb findutils iputils bind-utils rsync 

第5步:安装procdev

 echo "none /home/${NEW_USER_NAME}/proc proc defaults 0 0" >> /etc/fstab echo "/dev /home/${NEW_USER_NAME}/dev none bind 0 0" >> /etc/fstab 

 mount -a 

第6步:configurationDNS服务器

 echo "nameserver 8.8.8.8" >> /home/${NEW_USER_NAME}/etc/resolv.conf echo "nameserver 8.8.4.4" >> /home/${NEW_USER_NAME}/etc/resolv.conf 

就这样。

请注意, $NEW_USER_NAME已被绑定到当前会话!

添加其他用户时从第3步开始。

稍后要安装更多的软件包,请使用与步骤4中相同的命令。


当使用SSHlogin时,您会看到类似于cannot find name for user ID x 。 他们是安全的,可以忽略,但是如果你想摆脱他们,你将需要在chroot中复制用户:

 export NEW_USER_ID=$(id -u ${NEW_USER_NAME}) export NEW_USER_GROUP_ID=$(id -g ${NEW_USER_NAME}) chroot /home/${NEW_USER_NAME} /bin/bash -c 'useradd -u ${NEW_USER_ID} ${NEW_USER_NAME}' chroot /home/${NEW_USER_NAME} /bin/bash -c 'groupadd -g ${NEW_USER_GROUP_ID} chrootusers'