비밀번호 확인은 없지만 비밀번호를 통해 로그인할 수 있습니다.

비밀번호 확인은 없지만 비밀번호를 통해 로그인할 수 있습니다.

왜 여전히 비밀번호를 사용하여 Ubuntu 시스템에 SSH로 접속할 수 있나요? 다음은 /etc/ssh/sshd_configovh에서 호스팅되는 Ubuntu 20.04의 파일 입니다 (간단히 설명하기 위해 주석 처리되지 않은 행만 표시됨).

Include /etc/ssh/sshd_config.d/*.conf
Port xxx
PermitRootLogin no
AllowUsers      user1 user2
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem       sftp    /usr/lib/openssh/sftp-server

관련 파일에 대한 권한은 괜찮아 보입니다.

$ stat -c %a /home/user1/.ssh/
700

$ stat -c %a /home/user1/.ssh/authorized_keys`
600

나는 sudo service ssh restart달렸고 sudo service sshd restart.

비밀번호를 사용하여 SSH를 통해 Ubuntu 시스템에 계속 로그인할 수 있는 이유는 무엇입니까? 사용자 이름과 비밀번호를 사용하여 SSH(PuTTY)를 통해 로그인할 수 있는데 비밀번호만 묻습니다. user1과 user2의 키는 모두 .ssh 홈 폴더에 있습니다. 없어진 물건 있어요?

포함 파일을 확인했습니다.

-rw------- 1 root root   27 Dec  1 12:52 50-cloud-init.conf
...:/etc/ssh/sshd_config.d$ sudo cat 50-cloud-init.conf
PasswordAuthentication yes

그래서 그게 이유인 것 같은데? 하지만 내 구성이 이 설정을 재정의하지 않습니까? 위에(한줄씩) 포함되어 있으니까요?

답변1

Include /etc/ssh/sshd_config.d/*.confUbuntu/Debian 배포판에는 배포 시작 부분에 비표준 항목이 있습니다 sshd_config. 이것의 목적은 사용자가 코어 파일을 수정하지 않고도 sshd 구성을 사용자 정의할 수 있도록 하여 sshd_configOpenSSH에서 충돌이나 우발적인 구성 변경을 최소화할 수 있도록 하는 것입니다.apt update

왜냐하면첫 번째발견되는 구성 라인은 애플리케이션의 라인이며 사용자 정의 구성 파일의 모든 비밀번호 명령은 기본 구성의 라인을 /etc/ssh/sshd_config.d/*.conf선점합니다 . PasswordAuthentication no모든 구성이 예상한 대로인지 확인하세요.

@dexter가 지적했듯이 출력 valid config 를 사용할 수 있습니다 sudo sshd -T. 이는 하나의 구성 파일이 다른 구성 파일을 덮어쓸 때 강조 표시될 수 있습니다.

답변2

비밀번호 로그인은 단순히 통과하는 것이 아닙니다 PasswordAuthentication. 실제로 이는 "전용 단순" 인증 방법이며, KbdInteractiveAuthentication이전에 ChallengeResponseAuthentication으로 알려진 보편적인 비밀번호 인증 방법이 있습니다. 추가 또는 사용자 지정 질문을 통해 2단계 작업, 일회용 비밀번호 사용 등을 수행할 수 있는 채팅과 같은 범용 인증(챌린지 응답의 의미)입니다. 반면 전자는 시스템 비밀번호를 통한 이름 전달만 허용합니다. 인증을 위해.

UsePAMPAM은 sshd 및 PAM에 대한 시도-응답 채팅을 제공할 수 KbdInteractiveAuthentication있습니다 .ChallengeResponseAuthenticationPasswordAuthentication대개pam_unix.so기존 비밀번호 인증을 수행하도록 구성되어 UsePAM+ KbdInteractiveAuthenticationSSH에 대한 비밀번호 인증을 효과적으로 제공합니다. (이 점을 알아주신 @TooTea에게 감사드립니다.)

좋아요가 가장 많은 답변 보기여기(슬프게도 이것은 분명히 더 좋기 때문에 허용되는 답변이 아닙니다.) man sshd_config물론 참조하십시오.

답변3

PasswordAuthentication yes다음 덕분에 포함된 파일이 사용되었습니다 man sshd_config."각 키워드에 대해 처음 얻은 값이 사용됩니다."

이제 SSH를 통해 로그인을 시도하면"지원되는 인증 방법(공개 키)이 없습니다.".

SSH 키만 유효합니다.

답변4

match섹션을 사용하는 순서가 중요하다는 점을 기억하세요 .

이것은 작동합니다 :

Match User user-special
    PasswordAuthentication yes

Match User user-ftp
    AuthorizedKeysFile /home/user-ftp/.ssh/authorized_keys
    ChrootDirectory /DATA/s2survey
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

Match all
    PasswordAuthentication no
    KbdInteractiveAuthentication no
    ChallengeResponseAuthentication no

그러나 명령이 예상대로 작동하지 않습니다. 무시 되거나 (이유를 알 수 없음) 더 구체적인 섹션 PasswordAuthentication에서는 변경되지 않습니다 .match

PasswordAuthentication no
KbdInteractiveAuthentication no
ChallengeResponseAuthentication no

Match User user-special
    PasswordAuthentication yes

Match User user-ftp
    AuthorizedKeysFile /home/user-ftp/.ssh/authorized_keys
    ChrootDirectory /DATA/s2survey
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

Match all

관련 정보