먼저, 메시지를 표시하지 않고 공개 키 인증만 사용하는 것에 대해 묻는 것이 아니라는 점을 분명히 하고 싶습니다. SSH 공개 키 인증을 통해서만 사용자에게 액세스를 허용해야 하는 사용 사례가 있습니다. 이 사용자가 직렬 터미널에서 비밀번호를 통해 로그인하는 기능을 비활성화하길 원합니다. 나는 내 자신의 Linux 커널을 구축 중이므로 Authorized_keys 파일이 포함된 홈 디렉터리로 사용자를 생성합니다. /etc/shadow에는 사용자에게 비밀번호가 없는 항목이 있습니다: <username>:!:...
.
내 sshd_config에 해당 내용이 포함되어 있지만 그럼에도 불구하고 사용자는 해당 사용자의 ~/.ssh/authorized_keys 파일과 일치하는 올바른 개인 키 ID 파일을 계속 거부받고 있습니다 PasswordAuthentication no
. 이 버전의 SSH 서버는 이를 지원하지 않습니다(적어도 보고된 내용은 그렇습니다). 서버측 사용자 파일/폴더의 모든 소유권과 권한이 확인됩니다.PermitEmptyPasswords yes
UsePAM no
openSSH 서버(sshd) 코드를 살펴본 후 잠긴 계정에 대해 /etc/shadow 비밀번호 파일을 확인하는 것 같습니다.
https://github.com/openssh/openssh-portable/blob/V_7_4_P1/auth.c#L141
이로 인해 이 방법을 시도하는 것은 어리석은 일이며 비밀번호를 설정하고 다른 방법으로 직렬 로그인을 비활성화해야 한다고 믿게 됩니다.
이는 직관적이지만 커널(및 openssh)이 비밀번호가 설정되어 있지 않으면 사용자가 로그인할 수 없도록 설계되었는지 확인하고 싶었습니다. 이에 대한 공식 문서나 텍스트가 있나요? 미리 감사드립니다.
답변1
두 동작 중 하나를 구성할 수 있습니다.
비밀번호 필드가 /etc/shadow
느낌표로 시작하면 계정이 잠긴 것입니다. 이 계정은 SSH를 사용하여 로그인할 수 없으며 루트가 아닌 다른 사람이 계정에 액세스하려는 시도는 일반적으로 실패합니다.
비밀번호에 다른 유효하지 않은 비밀번호(일반적으로 Linux에서는 단일 별표)가 포함된 경우 계정에는 비밀번호가 없지만(별표는 암호화된 비밀번호에 대해 유효한 인코딩이 아니기 때문에) SSH 공개 키 인증 또는 기타를 통해 액세스할 수 있습니다. 암호화 수단을 의미합니다.
Debian 또는 Ubuntu를 사용하는 경우 adduser --disabled-login
이러한 동작을 사용하고 구성 할 수 있습니다 adduser --disabled-password
.
커널은 이 프로세스에 관여하지 않습니다. PAM과 sshd가 결정을 내립니다.
답변2
클라이언트의 공개 키를 $HOME/.ssh/authorized_keys
파일에 추가합니다. 이렇게 하면 모든 종류의 비밀번호 프롬프트가 비활성화됩니다. 개인 키가 비밀번호로 보호되어 있으면 이를 사용하도록 하십시오 ssh-agent
.