테스트 사용자를 생성할 때 사용자 경로가 홈 디렉터리일 것이라고 99% 확신했으며 이론적으로 연결되면 어떤 일이 있어도 다른 것은 표시되지 않을 것입니다.
제가 틀렸기 때문에 사용자의 SSH를 특정 폴더(예:이것) 그들 중 대부분이 다음과 같은 것을 가리킨다는 것을 발견했습니다.
Match User testuser
ChrootDirectory /home/testuser
ForceCommand internal-sftp
그런데 SSH를 시도하면 "Broken Pipe"라는 오류 메시지가 표시되지만 해결할 수 없습니다.
계속해서 읽거나 설정할 수 있는 곳이 있나요?
감사해요
답변1
문제의 원인은 해당 사용자가 사용자의 홈 디렉터리에 쓸 수 있기 때문일 수 있습니다(테스트 사용자). SSH는 chroot가 (사용자) 쓰기 가능한 디렉터리에 들어가고 연결을 종료하는 것을 허용하지 않습니다. 서버 로그에 로그 메시지가 있어야 합니다.
sshd_config
매뉴얼 페이지에는 다음과 같이 나와 있습니다 ChrootDirectory
.
ChrootDirectory Specifies the pathname of a directory to chroot(2) to after authentication. At session startup sshd(8) checks that all components of the pathname are root-owned directories which are not writable by any other user or group. ...
선택은 요구 사항에 따라 다릅니다. 기본 디렉터리 소유자를 루트로 변경하고 다른 쓰기 권한을 제거하고 (쓰기 가능한) 하위 디렉터리를 사용자가 소유하게 만들 수 있습니다. 예를 들어:
mkdir /home/testuser_tmp
mv /home/testuser /home/testuser_tmp/
mv /home/testuser_tmp /testuser_tmp
사용자에게 쉘 액세스 권한도 있는 경우 /etc/passwd
쓰기 가능한 하위 디렉토리를 가리키도록 홈 디렉토리 항목을 업데이트해야 합니다.