올바르게 작동하는 Ubuntu 서버에 PAM을 설치하고 구성했습니다. 로그인하려면 SSH 키를 설치하고 암호를 제공하고 인증 앱의 유효한 코드를 입력해야 합니다.

내가 가지고 있는 문제는 사용자별로 이러한 요구 사항에 예외를 추가하고 싶다는 것입니다.

예를 들어, 내 사용자 계정에 대해 이러한 모든 인증 방법을 시행하고 싶지만 다른 사용자(git - 내 GitLab 설치의 경우)가 SSH 키로만 액세스되도록 지정하고(비밀번호 또는 2FA 코드 필요 없음) 푸시 및 풀 동작 공장.

현재 이 문제를 해결하는 유일한 방법 auth required pam_google_authenticator.so nullok은 /etc/pam.d/sshd 파일 에 설정 하는 것이므로 2FA 부분은 선택 사항이며 @include common-auth을 주석 처리합니다 . 그러나 이것은 2FA 부분이 작동하는 동안 더 이상 기본 계정에서 비밀번호를 묻지 않음을 의미합니다.

나는 다음을 시도했다:

auth [success=1 default=ignore] pam_succeed_if.so user in git
@include common-auth

그러나 이것은 작동하지 않는 것 같습니다.

위의 모든 인증 방법을 기본적으로 활성화하지만 특정 사용자 계정 git등에 대한 예외를 추가하려면 어떻게 해야 합니까?

answer

이러한 요구 사항을 조금 분해해 보겠습니다.

SSH 구성

먼저 공개 키 암호를 제공 하도록 요구하려면 /etc/ssh/sshd_config다음 줄을 추가 하여 수정해야 합니다 .

AuthenticationMethods publickey,keyboard-interactive

이렇게 하면 모든 사람이 공개 키를 가지고 있어야 하며 로그인 시 암호를 제공할 수 있어야 합니다.

예외를 만들려면 Match블록을 사용하십시오 . 예를 들어 제한되지 않은 사용자가 come-as-please그룹에 있다고 가정해 보겠습니다 . 그런 다음 sshd_config파일 끝에 다음 줄을 추가 합니다.

Match Group come-as-please
    AuthenticationMethods publickey keyboard-interactive

쉼표가 없다는 점에 유의하십시오. 이는 그룹의 구성원이 공개 키 또는 키보드 상호 작용(암호) 인증을 사용할 수 있음을 의미 합니다.

google-authenticator 구성

구글 인증 모듈을 사용하기 위해서는 /etc/pam.d/sshd파일 을 수정해야 합니다.

@include common-auth

줄에 다음을 추가하십시오.

auth    required        pam_google_authenticator.so nullok

또한 2단계 인증을 활성화하려면 /etc/ssh/sshd_config다음 행을 추가 하여 파일 을 수정해야 합니다.

ChallengeResponseAuthentication yes

그런 다음 SSH 데몬을 다시 시작하십시오.

사용자 액세스 설정

위의 수정 후 다음과 같은 액세스 설정이 있습니다.

  • 모든 사용자 공개 키가 설치되어 있어야 하며 암호 제공 해야 합니다.
  • .google_authenticator사용자의 홈 디렉토리에 파일 이 있는 경우 해당 인증자 코드도 제공 해야 합니다 .
  • come-as-please그룹의 구성원인 사람 :
    • 그들이 공개 키를 설치 한 경우, 그들은 할 수 없습니다 그들이 가지고 있는지, 암호 또는 인증 코드를 제공 할 필요가 .google_authenticator자신의 집에서 파일을 여부,
    • 공개 키가 설치되어 있지 않으면 암호를 지정해야 합니다. .google_authenticator파일이 홈 디렉토리에 있는 경우 인증자 코드를 제공해야 합니다 .