나는 현재 사용하고 있습니다
auth required pam_unix.so try_first_pass nullok
auth optional pam_ssh.so use_first_pass
(그리고 Arch Linux가 기본적으로 추가하는 몇 가지 관련되지 않은 항목도 포함) 이는 내 로그인 비밀번호가 다음 덕분에 저장된(또는 링크된) SSH 키를 잠금 해제하는 데에도 사용된다는 것을 의미합니다 ~/.ssh/login-keys.d/
.pam_ssh( 로그인 비밀번호로 SSH 키를 잠금 해제할 수 없는 경우 try_first_pass
이를 사용하여 비밀번호 프롬프트를 받을 수도 있습니다.)
SSH 키 비밀번호가 로그인 비밀번호와 동일하면 제대로 작동합니다. 그러나 내가 원하는 것은 무엇입니까?좋다내가 달성하고 싶은 것은 기본적으로 두 가지 중 하나를 사용하여 로그인할 수 있다는 것입니다.다른비밀번호 - 내 로그인 비밀번호 중 하나또는SSH 키 중 하나입니다.
pam_ssh
그래서 먼저 SSH 키를 잠금해제해야겠다고 생각한 다음~하지 않는 한실패한 항목은 pam_unix
필수 항목이어야 하며, 그렇지 않으면 건너뛰어야 합니다. 이것이 어떻게든 달성될 수 있습니까?
처음에는 먼저 배치하는 것이 해결책이라고 생각했지만 추가로 대신 pam_ssh
만들어야 했습니다 .sufficient
optional
auth sufficient pam_ssh.so try_first_pass
auth required pam_unix.so try_first_pass nullok
required
그러나 실제 파일에는 다른 줄이 있습니다.다음과 같은 required pam_unix.so
, 예를 들어 required pam_env.so
이제 무시됩니다! 그럼 내가 어떻게 할 수 있니?진짜이 문제를 해결하시겠습니까?
답변1
다른 두 개의 SE 게시물에 감사드립니다(딱 하나만,SF익스프레스 1호), 대답은 사용에 있습니다고급 control
구문. 이것
auth required pam_unix.so try_first_pass nullok
# and sometime later
auth optional pam_ssh.so use_first_pass
그러므로 그것은되어야한다
auth [success=1 new_authtok_reqd=1 ignore=ignore default=ignore] pam_unix.so try_first_pass nullok
auth required pam_ssh.so use_first_pass
지금이 줄은 이 줄 pam_ssh
바로 앞에 와야 합니다. 이는 후속 모듈을 건너뛰는 것을 의미합니다 .pam_unix
success=N
N
session pam_ssh.so
또한, 줄을 서실 때에는 줄을 서시는 것을 잊지 마세요!
첫 번째 시도에서 나는
auth [success=1 default=ignore] pam_ssh.so try_first_pass
auth required pam_unix.so use_first_pass nullok
반대로, 이 방법은 SSH 키가 없는 모든 사용자를 잠급니다! 이것만으로는 default=ignore
충분하지 않으며 auth_err=ignore
명확하므로 추가해야 합니다.아니요의 일부로 간주됩니다 default
. 또한 이 시도는 사용자가 로그인했는지 여부에 따라 "비밀번호" 또는 "SSH 비밀번호" 프롬프트가 표시됨을 의미합니다.가지다SSH 키!
Arch Linux에서 pam_unix
사용되는 라인은 체인에 login
있습니다 .include
login -> system-local-login -> system-login -> system-auth
system-login
다른 것도 있습니다required
앞으로포함되어 있으므로 이전에 간단히 입력 system-auth
할 수 없습니다 . 오류를 건너뛰고 다행히도 (대신 ) 여전히 로그인 비밀번호로만 로그인할 수 있습니다! 반면에 을 수정하면 다음도 허용됩니다.auth [success=1 default=ignore] pam_ssh.so try_first_pass
login
auth include system-local-login
required
pam_unix.so use_first_pass
try_first_pass
system-auth
다른sshd
SSH 키를 로그인 비밀번호로 사용하는 인증 옵션 과 같은 서비스입니다 . 정말로 직접 사용하고 싶다면 login
체인을 끊고 모든 것을 수동 include
으로 .auth
login