사용자가 비밀번호나 공개 키 없이 SSH를 수행할 수 있도록 SSHD를 어떻게 구성합니까?

사용자가 비밀번호나 공개 키 없이 SSH를 수행할 수 있도록 SSHD를 어떻게 구성합니까?

사용자를 공개적으로 허용하고 싶습니다. 즉, 사람들이 비밀번호를 입력하거나 공개 키를 설정하지 않고 로그인할 수 있도록 허용하고 싶습니다. 이는 개방형 SSH 애플리케이션을 생성하기 위한 것입니다. 간단해야 하지만 작동하지 않는 것 같습니다. 여기 내 sshd_config가 있습니다.

UsePAM no
Match User app
        X11Forwarding no
        AllowTcpForwarding no
        # PermitTTY no
        PermitEmptyPasswords yes
        AuthenticationMethods none
        ForceCommand myapp

클라이언트로 ssh를 시도하면 비밀번호를 묻는 메시지가 나타납니다.

[email protected]'s password:
Permission denied, please try again.

몇 가지 변형을 시도했지만 운이 없습니다.

감사해요.

답변1

예비 설명

  1. 관리자 권한 셸( sudo -i)을 시작하고 열어 둡니다. 문제가 발생하면 관리자 권한 셸을 사용하여 변경 사항을 되돌리세요.
  2. sudo cp -a …수정하려는 파일의 복사본을 만듭니다 ( ).
  3. 마지막으로 다시 로그인하여 sudo재인증할 수 있는지 확인하세요. 그런 다음 올려진 하우징을 닫으십시오.

솔루션 - 1부:/etc/ssh/sshd.conf

자체적으로 관리되는 비밀번호 인증 sshd대신 PAM 및 해당 키보드 대화형 인증을 사용하도록 구성합니다 . sshd가장 쉬운 방법은 모든 사용자에 대해 무조건적으로 이를 수행하는 것입니다. 존재하다 /etc/ssh/sshd.conf:

UsePAM yes
PasswordAuthentication no
KbdInteractiveAuthentication yes
#...

노트:

  • 각 매개변수에서 처음 얻은 값을 사용합니다.

  • ChallengeResponseAuthenticationKbdInteractiveAuthentication예, 별칭은 더 이상 사용되지 않으므로 파일에 이전 이름이 없는지 확인하세요 .ChallengeResponseAuthentication no

  • PasswordAuthentication사용자를 위한 키보드 대화형 인증 과 다른 사용자를 위한 일반 비밀번호 인증을 수행할 수 있도록 KbdInteractiveAuthentication뒤에 배치할 수 있지만 전역 적입니다. 스니펫은 다음과 같습니다.Match User …appUsePAM

    UsePAM yes
    Match User app
          PasswordAuthentication no
          KbdInteractiveAuthentication yes
    Match All
    PasswordAuthentication yes
    KbdInteractiveAuthentication no
    

sshd파일을 수정한 후 다시 시작하거나 다시 로드하세요(예: Debian sudo systemctl reload ssh.service: ).


솔루션 - 2부: /etc/pam.d/common-auth또는/etc/pam.d/sshd

두 가지 방법:

  • 항상 자동으로 사용자를 인증하려면 app수정하세요 /etc/pam.d/commmon-auth.
  • 관련되었을 때 사용자를 자동으로 인증하려는 경우에는 app수정하되 수정하지 마세요 .sshd/etc/pam.d/sshd/etc/pam.d/commmon-auth

실제로는 /etc/pam.d/commmon-auth또는 를 수정해야 합니다 /etc/pam.d/sshd. 그것들을 수정하는 것은 너무 많은 것입니다.


솔루션 - 파트 2a:/etc/pam.d/common-auth

항상 자동으로 사용자를 인증하도록 PAM을 구성하려면 in을 포함하는 (이미 존재하는) 행 앞에 다음을 포함하는 행을 추가하십시오 app. 파일은 다음과 같아야 합니다.pam_succeed_if.sopam_unix.so/etc/pam.d/common-auth

# [...]
auth [success=2 default=ignore] pam_succeed_if.so user = app
auth [success=1 default=ignore] pam_unix.so nullok
# [...]
auth requisite pam_deny.so
# [...]
auth required pam_permit.so
# [...]

수정된 방법입니다이 다른 답변, 거기에 설명이 있습니다. pam_succeed_if사용자가 app인증을 위해 처리(비밀번호를 묻는 메시지)를 거칠 필요가 없도록 이를 먼저 넣었습니다 pam_unix.

appsu app예를 들어, 이는 인증을 요청하는 모든 도구에 대해 자동으로 사용자를 인증합니다. 요청 app시에만 sshd사용자를 자동으로 인증 하려면 다음을 수정해야 합니다 /etc/pam.d/sshd.


솔루션 - 2b부:/etc/pam.d/sshd

관련된 사용자를 자동으로 인증하도록 PAM을 구성하려면 app(이미 존재함) 앞에 두 줄을 추가하십시오. 파일의 시작 부분은 다음과 같아야 합니다.sshd@include common-auth/etc/pam.d/sshd

# [...]

auth [success=1 default=ignore] pam_succeed_if.so user != app
auth sufficient pam_permit.so

# Standard Un*x authentication.
@include common-auth

# [...]
[...]

관련 정보