Ubuntu 14.04.1에서 작동하는 공개 키 (암호 없음) + Google 인증기로 SSH를 가져 오려고합니다.


20

Ubuntu 14.04.1 (OpenSSH 6.6 및 libpam-google-authenticator 20130529-2 사용)을 사용하고 있습니다.

공개 키가 인증없이 (암호없이) SSH 로그인을 설정하려고하는데 사용자에게 Google OTP의 코드를 입력하라는 메시지가 표시됩니다.

다음 안내에 따라 Google Auth 프롬프트와 함께 비밀번호 프롬프트를 받았습니다.

나는 패키지를 설치 한 내 편집 한 /etc/ssh/sshd_config/etc/pam.d/ssh파일

에서 /etc/ssh/sshd_config:

ChallengeResponseAuthentication yes
AuthenticationMethods  publickey,keyboard-interactive
UsePAM yes

아래에 /etc/pam.d/ssh:

auth required pam_google_authenticator.so nullok # (I want to give everyone a chance to set up their 2FA before removing "nullok")

PAM이 주문에 종속적이라는 sshd_config것도 알고 있습니다.

내가 무엇을 잘못하고 있지? 도움을 주시면 감사하겠습니다.

답변:


28

잘 작동했는지 먼저 확인하십시오.

apt-get install libpam-google-authenticator

에서 /etc/pam.d/sshd내가 변경 / (상단)에 다음 줄을 추가 :

# @include common-auth
auth required pam_google_authenticator.so

그리고 /etc/ssh/sshd_config:

ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
PasswordAuthentication no

제대로 작동하고 공개 키로 인증 한 후 "확인 코드"프롬프트가 나타납니다. PAM에서 암호 인증 방법을 효과적으로 제거했기 때문에 암호 + 토큰 또는 키 + 토큰으로 인증을 허용하는 방법을 잘 모르겠습니다.

ssh -v와 함께 Ubuntu 14.04.1 LTS (GNU / Linux 3.8.0-19-generic x86_64) 사용 : OpenSSH_6.6.1p1 Ubuntu-2ubuntu2, OpenSSL 1.0.1f 2014 년 1 월 6 일


그래서 후손을 위해 나는 내 문제를 깨달았다. 나는 또한 시도했지만 PasswordAuthentication no, 그렇지 않았다. 문제는 내가 / 가지고 있다고 /이었다입니다 ControlMaster autoControlPath내 ~ / .ssh / config 파일에있는 지시어. 나는 내가 잠기지 않도록하고 싶었 기 때문에 항상 SSH 세션을 열어 두었습니다. 내 컴퓨터는 그냥 재사용하기 때문에 항상 시스템에 토큰을 요구하지 않고 들어 왔습니다. 귀하의 답변을 따르는 사람은 실제로 설정을 얻을 것이기 때문에 귀하의 답변을 올바른 것으로 표시했습니다. 감사!
JT.

2
나는 내가 가진 7에 CentOS를 사용하고 PasswordAuthentication no, ChallengeResponseAuthentication yes, AuthenticationMethods publickey,keyboard-interactive,과 UsePAM yessshd_config. 키의 유효성을 검사 한 다음 Google OTP 토큰 요청한 비밀번호를 묻습니다. 세 가지를 모두 수행하도록 돕습니다. AuthenticationMethods publickey,keyboard-interactive:pam매뉴얼 페이지에서 제안한대로 시도했지만 아무것도 변경되지 않았습니다. 어떤 아이디어?
Nick Williams

6
@ NickWilliams 나는 같은 문제를 겪고있었습니다. 나를 위해 고 쳤던 @include common-auth것은 대답이 보여주는 선 을 칭찬해야한다는 것 입니다. 방금 pam_google_authenticator처음에 /etc/pam.d/sshd 의 줄에 대한 주석이라고 생각했습니다 .
freb

5
고맙습니다! 내 솔루션은 정확히 같지 않았지만 (댓글을 달아야했습니다 auth substack password-auth) 귀하의 의견으로 문제가 해결되었습니다!
Nick Williams


7

나는 마침내 auth [success=done new_authtok_reqd=done default=die] pam_google_authenticator.so nullok의 맨 위에 배치 하여이 작업을 수행 할 수있었습니다 /etc/pam.d/sshd.

pam.d 매뉴얼 페이지 에 따르면 :

  • success=done 이는 Google OTP가 로그 오프하면 더 이상 인증이 수행되지 않으므로 추가 비밀번호 프롬프트가 표시되지 않음을 의미합니다.
  • default=die 즉, Google OTP가 로그인 시도를 거부하면 비밀번호 프롬프트를 건너 뛰고 인증이 즉시 실패합니다.

그래서 [success=done new_authtok_reqd=done default=die]정렬 사이의 혼합이다 sufficientrequisite성공, 즉시 (충분한) 종료 할 경우, 실패하는 경우, 즉시 (필수) 종료 : 우리 모두에서 동작을 원하기 때문에, 제어 값.

nullokpam_google_authenticator.so에 대한 인수 ~/.google_authenticator는 사용자에 대한 파일을 찾을 수없는 경우 공개 키 인증이 정상적으로 진행됨을 의미합니다. 2FA로 내 계정의 하위 집합 만 잠 그려는 경우에 유용합니다.


6

Linus Kendall의 답변은 구형 시스템에서는 작동하지만 최신 Linux 시스템에서는 문제가 있습니다. 내 아치 리눅스 기반 웹 서버에서 구성하면 ssh 키를받은 후 pam에서 인증 자 코드와 암호를 요구합니다 (즉, 3 개 모두 필요).

이 문제를 방지하고 모든 시스템에서 작동해야하는보다 간단한 솔루션은 다음과 같이 항목을 변경하는 것입니다 /etc/pam.d/sshd.

auth sufficient pam_google_authenticator.so

그런 다음 Linus가 언급 한``/ etc / ssh / sshd ''에 대해 동일한 편집을 수행하십시오.

ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
PasswordAuthentication no

서버가 공개 키를 수락 한 후 인증 자 토큰을 요청해야합니다. 비밀번호를 요구해서는 안됩니다.

참고로 sftp 사용자 계정을 사용하려면 작동하기 위해 Google 인증자를 우회해야 할 수도 있습니다. 다음은 sftp jail을 안전하게 사용하는 방법에 대한 제안입니다. 에서 etc/ssh/sshd_config:

Subsystem sftp internal-sftp
Match User ftp-user
  PasswordAuthentication yes
  AuthenticationMethods password
  ChrootDirectory /path/to/ftp/dir
  ForceCommand internal-sftp

당신은 /에 / FTP / 디렉토리 루트 쓰기 만 (예 :에 / 경로 권한을 확인해야합니다 chown root:root /path/to/ftp/dir, chmod 755 /path/to/ftp/dir. 그 디렉토리 위의 부모의 모든 또한 보안 권한이 필요합니다. 나는 보통이 작업을 수행하는 방법을 chroot를 디렉토리를 만드는 것입니다 /home/shared/user하는을 만드는 거기에 디렉토리 (예 : 'data')를 입력 한 다음 다음과 같이 공유하려는 디렉토리를 마운트하십시오.sudo mount -o bind /path/to/ftp/dir /home/shared/user/data

이 모든 단계를 수행하면 ssh 사용자를위한 공개 키 + Google 인증 자 로그인 및 데이터 전송을위한 기능 암호로 보호되는 sftp 계정이 있습니다.


이것은 잘 작동합니다. 그리고 어떤 이유로 나는 공동 저자를 언급하는 것이 편안하지 않기 때문에 이것이 Linus의 솔루션보다 더 이상적이었습니다.
Luke Sapan

고마워요! pubkey + authcode 후에 왜 암호를 입력해야하는지 궁금해하는 야간 디버깅 ssh를 낭비했습니다 ……
felix021
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.