CentOS에 sftp를 설치하고 새 그룹을 추가했습니다.
groupadd sftp
새 사용자가 실제로 생성되었습니다.
useradd -m sftp_user_1 -s /sbin/nologin -g sftp
비밀번호가 실제로 생성되었습니다.
passwd sftp_user_1
주인이 바뀌었어요:
chown root /home/sftp_user_1
권리를 변경합니다:
chmod 750 /home/sftp_user_1
주인이 바뀌었어요:
chown sftp_user_1:sftp /home/sftp_user_1
사용자 및 그룹을 확인했습니다.
id sftp_user_1
[root@centos-24 home]# id sftp_user_1
uid=1000(sftp_user_1) gid=1000(sftp) groups=1000(sftp)
/etc/ssh/sshd_config 파일이 실제로 변경되었습니다.
Subsystem sftp /usr/libexec/openssh/sftp-server
로 변경됩니다
Subsystem sftp internal-sftp
파일 끝에 추가할지 여부
Match Group sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /home/%u
ForceCommand internal-sftp
서비스를 다시 시작할지 여부
systemctl restart sshd
SFTP 서버에 연결을 시도하고 오류가 반환됩니다.
[root@centos-24 home]# sftp sftp_user_1@localhost
sftp_user_1@localhost's password:
packet_write_wait: Connection to ::1 port 22: Broken pipe
Couldn't read packet: Connection reset by peer
이 문제를 어떻게 해결하나요?
답변1
이 단계에서
chown root /home/sftp_user_1
SFTP로 변경하고 그룹화해야 합니다.
chown root:sftp /home/sftp_user_1
/etc/ssh/sshd_config 파일에 존재하기 때문에
Match Group sftp
답변2
귀하의 sftp
클라이언트가 원격 측에서 연결을 갑자기 종료했다고 보고했습니다.
이 경우 가장 좋습니다.서버 측 로그 읽기: 원격 서버가 연결을 종료한 경우 서버 로그에 그렇게 표시되어야 합니다. 일반적으로 연결도 종료됩니다.왜서버가 이렇게 했습니다.
이 특정한 경우에 문제를 재현할 때 보이는 것은 다음과 같습니다.
Sep 23 14:53:52 centos7 sshd[1800]: Accepted password for sftp_user_1 from ::1 port 52166 ssh2
Sep 23 14:53:52 centos7 sshd[1800]: pam_unix(sshd:session): session opened for user sftp_user_1 by (uid=0)
Sep 23 14:53:52 centos7 sshd[1800]: fatal: bad ownership or modes for chroot directory "/home/sftp_user_1" [postauth]
Sep 23 14:53:52 centos7 sshd[1800]: pam_unix(sshd:session): session closed for user sftp_user_1
"chroot 디렉토리의 소유권이나 모드가 잘못되었습니다 /home/sftp_user_1
."따라서 sshd
의 권한이 만족스럽지 않습니다 ChrootDirectory
. 귀하의 경우 chroot 사용자의 홈 디렉터리와 동일합니다.
sshd_config(5)
매뉴얼 페이지 에 따르면 구성 매개변수가 참조하는 디렉토리는 ChrootDirectory
루트가 소유해야 하며 다른 사람이 쓸 수 없어야 합니다.
Chroot 디렉토리
인증 후 chroot(2)에 대한 디렉토리 경로 이름을 지정합니다. sshd(8)는 세션 시작을 확인합니다.경로명의 모든 구성요소예루트 소유디렉토리는다른 사용자나 그룹은 쓸 수 없습니다.. chroot 후에 sshd(8)는 작업 디렉토리를 사용자의 홈 디렉토리로 변경합니다.
다시 말해서,ChrootDirectory는 사용자의 홈 디렉터리일 수 없지만 최소한 한 수준 위에 있어야 합니다.이 요구 사항은 이전 버전보다 높습니다 sshd
. 누군가 chroot 감옥에서 탈출할 수 있는 새로운 방법을 발견한 후에는 이렇게 되어야 했습니다. 새로운 요구 사항으로 인해 이 이스케이프 방법을 사용할 수 없게 됩니다.
두 가지 가능한 해결책에 대해서는 다른 질문에서 내 대답을 참조하십시오.https://unix.stackexchange.com/a/542507/258991
답변3
연결과 관련된 오류가 있는지 로그를 확인하세요. 이를 확인하는 쉬운 방법은 다음 명령을 사용하는 것입니다.
grep -i username /var/log/auth.log
grep -i username /var/log/secure.log
제 경우에는 홈 디렉터리 손실 로그가 문제를 식별하는 데 큰 도움이 되었습니다.