사용자를 chroot할 수 없습니다. [중복]

사용자를 chroot할 수 없습니다. [중복]

내 SSH 서버는 4년 동안 잘 작동했기 때문에 사용자를 추가하고 특정 폴더에 chroot를 지정하고 싶습니다.

> useradd -m -c /home/thomas -s /bin/sh thomas
> passwd thomas
> chmod 755 /home/thomas
> chown root: /home/thomas
> service ssh restart

내가 이것을 할 때, 나는할 수 있는연결이 진행되고 ssh연결 sftp이 작동합니다. 문제는 특정 폴더로 루트를 지정하고 싶다는 것입니다.

> vim /etc/ssh/sshd_config

파일 끝에 다음을 추가합니다.

Match user thomas
    ChrootDirectory /home/%u

이것만 추가하면 아무것도 바뀌지 않겠죠? 구성이 동일해야 하며 여전히 sftp에 연결하거나 사용할 수 있어야 합니다. 그래서 재부팅했고 service ssh restart더 이상 sftp에 연결할 수 없습니다.

혹시라도:

root@xx:/etc/nginx/sites-enabled# /usr/sbin/sshd -v
sshd: illegal option -- v
OpenSSH_6.0p1 Debian-4+deb7u6, OpenSSL 1.0.1t  3 May 2016
usage: sshd [-46DdeiqTt] [-b bits] [-C connection_spec] [-c host_cert_file]
            [-f config_file] [-g login_grace_time] [-h host_key_file]
            [-k key_gen_time] [-o option] [-p port] [-u len]
root@xx:/etc/nginx/sites-enabled#

내가 뭘 잘못했나요?

답변1

설명서 sshd_config에는 다음과 같은 내용이 나와 있습니다.

ChrootDirectory사용자 세션을 지원하는 데 필요한 파일과 디렉터리를 포함 해야 합니다 . 대화형 세션의 경우 최소한 셸(일반적으로 sh(1))과 기본 /dev노드(예 null(4): , zero(4), stdin(4), stdout(4)및 장치 ) stderr(4)가 필요합니다. tty(4)SFTP를 사용하는 파일 전송 세션의 경우 in-process sftp 서버를 사용하는 경우 추가 환경 구성이 필요하지 않지만 로깅을 사용하는 세션에는 /dev/log일부 운영 체제에서 chroot 디렉토리가 필요할 수 있습니다(참고 sftp-server(8)자료 참조).

dev이 디렉토리를 생성하고 /dev/MAKEDEV거기에 스크립트를 복사 해야 합니다 . 스크립트를 사용하여 필요한 장치 파일을 만듭니다.

대화형 사용자의 경우 chroot에 필요한 바이너리 및 관련 라이브러리도 설치해야 합니다.

"in-process sftp server"에 대한 참조는 ForceCommand internal-sftp해당 서버가 블록에서 사용되어야 함을 의미합니다 Match.

참고: 이 발췌문은 OpenSSH 7.5에서 발췌한 것입니다. 이전 SSH 구현에 대한 액세스 권한이 없기 때문입니다.

관련 정보