왜 여전히 비밀번호를 사용하여 Ubuntu 시스템에 SSH로 접속할 수 있나요? 다음은 /etc/ssh/sshd_config
ovh에서 호스팅되는 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/*.conf
Ubuntu/Debian 배포판에는 배포 시작 부분에 비표준 항목이 있습니다 sshd_config
. 이것의 목적은 사용자가 코어 파일을 수정하지 않고도 sshd 구성을 사용자 정의할 수 있도록 하여 sshd_config
OpenSSH에서 충돌이나 우발적인 구성 변경을 최소화할 수 있도록 하는 것입니다.apt update
왜냐하면첫 번째발견되는 구성 라인은 애플리케이션의 라인이며 사용자 정의 구성 파일의 모든 비밀번호 명령은 기본 구성의 라인을 /etc/ssh/sshd_config.d/*.conf
선점합니다 . PasswordAuthentication no
모든 구성이 예상한 대로인지 확인하세요.
@dexter가 지적했듯이 출력 valid config 를 사용할 수 있습니다 sudo sshd -T
. 이는 하나의 구성 파일이 다른 구성 파일을 덮어쓸 때 강조 표시될 수 있습니다.
답변2
비밀번호 로그인은 단순히 통과하는 것이 아닙니다 PasswordAuthentication
. 실제로 이는 "전용 단순" 인증 방법이며, KbdInteractiveAuthentication
이전에 ChallengeResponseAuthentication으로 알려진 보편적인 비밀번호 인증 방법이 있습니다. 추가 또는 사용자 지정 질문을 통해 2단계 작업, 일회용 비밀번호 사용 등을 수행할 수 있는 채팅과 같은 범용 인증(챌린지 응답의 의미)입니다. 반면 전자는 시스템 비밀번호를 통한 이름 전달만 허용합니다. 인증을 위해.
UsePAM
PAM은 sshd 및 PAM에 대한 시도-응답 채팅을 제공할 수 KbdInteractiveAuthentication
있습니다 .ChallengeResponseAuthentication
PasswordAuthentication
대개pam_unix.so
기존 비밀번호 인증을 수행하도록 구성되어 UsePAM
+ KbdInteractiveAuthentication
SSH에 대한 비밀번호 인증을 효과적으로 제공합니다. (이 점을 알아주신 @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