특정 사용자를위한 SSH 공개 키 인증 강제


10

특정 사용자가 공개 키로 로그인하도록하고 다른 사용자는 비밀번호로 로그인 할 수 있습니까? 암호로 인증 된 공개 키 인증은 암호 전용 인증보다 강력하므로 sudoers는 공개 키로 로그인해야합니다. 그러나 일반 사용자가 그렇게하는 것이 덜 편리합니다. 에서 sshd_config정책 관련 구성이 표시되지 않습니다.

답변:


11

몇 가지 옵션이 있습니다. 이 답변에서는 sudoers그룹이 정의 되어 있다고 가정합니다 .

상기 살펴보세요 sshd_configman 페이지를하고 찾아 Match지시어. 이를 통해 ssh 연결의 서브 세트에만 적용되는 구성 블록을 지정할 수 있습니다. 다음과 같이 할 수 있습니다.

Match Group sudoers
PasswordAuthentication no
ChallengeResponseAuthentication no

이론적으로 PAM 구성과 유사한 기능을 수행하면 sudoers그룹 구성원의 인증 시도가 실패합니다 . 이것은 아마도 pam_succeed_if 모듈과 관련이 있습니다 ... authsshd 의 구성에 다음과 같은 것을 추가 할 수 있습니다 :

auth        requisite     pam_succeed_if.so user notingroup sudoers quiet

이는 sudoers그룹에 속하지 않은 사람 만 PAM을 통해 인증 할 수 있음을 의미합니다 . 이것은 테스트되지 않았습니다. pam_listfile 모듈을 사용하여 비슷한 작업을 수행 할 수도 있습니다 .


1
감사! 또한 Match 지시문이 OpenSSH 5.0에 도입되었습니다. CentOS와 같은 보수적 인 배포의 경우 기본적으로 사용하지 못할 수 있습니다.
Crend King

이로 인해 OpenSSH 7.7p1이 중단되었습니다. 다시 시작하기 위해 ChallengeResponseAuthentication 지시문을 제거해야했습니다.
rbsec

3

@larsks와 같은 또 다른 가능한 대답은 내 버전에 대한 답변이 작동하지 않습니다. 내 버전은 여기에 있는 ssh_d설명서를 사용하는 것으로 보입니다 .

일치 키워드 다음 줄에는 키워드의 하위 집합 만 사용할 수 있습니다. 사용 가능한 키워드는입니다. . .

해당 키워드 목록에는 다음이 포함되지 않습니다 ChallengeResponseAuthentication..

내가 찾은 정말 재미있는 방법 AuthenticationMethods은 귀하의 경우 다음과 같이 작동하는 것입니다.

Match Group sudoers
AuthenticationMethods 'publickey'

AuthenticationMethods 서버에 액세스하기 전에 사용자가 전달해야하는 일련의 메소드를 나타내는 쉼표로 구분 된 값 목록을 가져옵니다.

AuthenticationMethods 'publickey,password' 사용자가 공개 키와 암호를 전달하도록 강요합니다.

더 읽으려면 man sshd_config.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.