在 CentOS 7 上建立 chroot SSH 的正確方法

在 CentOS 7 上建立 chroot SSH 的正確方法

有很多關於如何創建 chrooted SFTP 的教程,但我想使用 SSH,因為它比簡單地折騰wgetFTPunzip和phpMyAdmin 要快得多。該方法也應該是乾淨的(無需手動魔法)並且可擴展,因此我可以輕鬆添加和升級套件。mysqlmysqldumpldd

答案1

幸運的是,我能夠想出一種方法來做到這一點。

第 1 步:為 chroot 使用者新增群組

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'

相關內容