CentOS 7에서 chrooted SSH를 생성하는 적절한 방법

CentOS 7에서 chrooted SSH를 생성하는 적절한 방법

chrooted SFTP를 생성하는 방법에 대한 튜토리얼이 많이 있지만 FTP와 phpMyAdmin을 뒤지는 것보다 간단히 wget, 및 unzip를 사용하는 것이 훨씬 빠르기 때문에 SSH를 사용하고 싶습니다 . 또한 메서드는 깔끔하고(수동 매직 없이) 확장 가능해야 하므로 패키지를 쉽게 추가하고 업그레이드할 수 있습니다.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'

관련 정보