有很多关于如何创建chrooted SFTP的教程,但我想使用SSH,因为简单地wget,unzip,mysql和
mysqldump要比绕FTP和PHPMyAdmin快得多.该方法也应该是干净的(没有手动ldd魔术)和可扩展,所以我可以轻松添加和升级包.
解决方法
幸运的是,我能想出办法来做到这一点.
groupadd chrootusers
第2步:配置SSH
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
将peter更改为您想要的用户名.
export NEW_USER_NAME=peter useradd ${NEW_USER_NAME} usermod -G chrootusers -d / ${NEW_USER_NAME} passwd ${NEW_USER_NAME}
第4步:安装包并创建必要的目录结构
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步:安装proc和dev
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:配置DNS服务器
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已绑定到当前会话!
要在以后安装更多软件包,请使用与步骤4中相同的命令.
使用SSH登录时,您将收到无法找到用户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'