학교 서버의 학급 계정을 사용하여 이 SSH 문제를 해결하는 데 몇 시간이 걸렸습니다.
비밀번호를 입력하지 않으면 특정 계정 카테고리에 SSH로 접속할 수 없지만, 다른 계정 카테고리에서는 비밀번호 없는 인증이 작동합니다. .ssh/ 디렉터리와 모든 콘텐츠에는 다른 수업 계정과 동일하고 올바른 권한이 있습니다.
문제는 내 홈 디렉토리에 설정된 권한에 있다는 것이 밝혀졌습니다. 내 HOME 디렉토리의 권한이 770으로 설정된 경우(.ssh/의 권한 설정과 관계없이) 비밀번호 없는 인증이 작동하지 않지만, 권한이 755 또는 700으로 설정된 경우에는 작동합니다.
SSH가 왜 이런 일을 하는지 아는 사람이 있나요? 홈 디렉토리 권한이 너무 느슨합니까? 홈 디렉토리 설정이 700보다 허용되는 경우 SSH가 공개/개인 키를 사용한 인증을 거부하는 이유는 무엇입니까?
답변1
이것이 SSH의 기본 동작입니다. 소유자만이 디렉터리에 액세스할 수 있도록 강제 rwx------
하고 보장 함으로써 이를 수행합니다 . 해당 소유자 이외의 다른 사용자가 디렉터리에 대한 쓰기 액세스 권한을 갖고 있는 경우 악의적으로 권한을 수정하거나 잠재적으로 사용자 키를 탈취 할 수 있습니다 . 요약하면 SSH가 작동하려면 다음 권한이면 충분합니다.$HOME/.ssh
$HOME
$HOME
$HOME/.ssh
known_hosts
$HOME
rwx------
rwxr-x---
rwxr-xr-x
g+w
디렉터리 또는 디렉터리 내에 변경 사항이 있는 경우 o+w
SSH는 제대로 작동하지 않으며 로깅 도구에 경고가 전송됩니다 $HOME
. 그러나 관리자는 다음을 정의하여 이 동작을 재정의할 수 StrictModes no
있습니다 sshd_config
.권장되지 않음.
답변2
홈 디렉터리의 77x는 올바른 GID를 가진 누구나 .ssh 디렉터리를 이동하고 다른 디렉터리로 바꿀 수 있음을 의미합니다. 올바른 GID를 가진 사용자는 홈 디렉터리에 대한 쓰기/실행 권한을 가지므로 파일/디렉터리의 이름을 바꾸거나 만들 수 있습니다.
SSH는 권한과 관련하여 매우 까다롭습니다. 그래야 합니다.