在 CentOS 7 上创建 chrooted SSH 的正确方法

在 CentOS 7 上创建 chrooted SSH 的正确方法

关于如何创建 chrooted SFTP 的教程有很多,但我想使用 SSH,因为简单wgetunzip和比在 FTP 和 phpMyAdmin 之间来回切换要快得多。该方法还应该简洁(无需手动操作)mysql且可扩展,这样我就可以轻松添加和升级软件包。mysqldumpldd

答案1

幸运的是,我能够找到一种方法来做到这一点。

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

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

步骤 3:添加用户

更改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:安装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:配置 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与当前会话有关!

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

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


使用 SSH 登录时,您将收到类似这样的消息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'

相关内容