키가있는 사용자 만 로그인하도록 SSH를 강제 실행하려면 어떻게해야합니까?


73

나는 여기 지침을 따르려고 노력했다 : http://lani78.wordpress.com/2008/08/08/generate-a-ssh-key-and-disable-password-authentication-on-ubuntu-server/

서버에 공개 키가있는 사용자 만 인증 할 수 있지만 SSH가 사용자 이름 / 비밀번호로 로그인하는 것을 허용하지 않습니다.

여기 내 sshd_config 파일이 있습니다-아무것도 빠졌습니까? 이미 SSH와 컴퓨터 자체를 다시 시작하려고했습니다.

# Package generated configuration file
# See the sshd_config(5) manpage for details


# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes


# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768


# Logging
SyslogFacility AUTH
LogLevel INFO


# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes


RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile        %h/.ssh/authorized_keys


# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes


# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no


# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no


# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication no


# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes


# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes


X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no


#MaxStartups 10:30:60
#Banner /etc/issue.net


# Allow client to pass locale environment variables
AcceptEnv LANG LC_*


Subsystem sftp /usr/lib/openssh/sftp-server


# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM no

1
참고 : 실제로 sshd 재시작은 실제로 필요하지 않습니다. /etc/inid.d/ssh reload 명령 으로 충분합니다.
Oliv

#AuthorizedKeysFile의 주석을 해제하고 공개 키를 ~ / .ssh / authorized_keys에 복사 한 후 다시 시작해야합니다. 이것이 없으면 작동하지 않습니다.
ivanleoncz

2016 년이 사실이 아니라면 2019 년에 다시 시작해야합니다. 재 장전이 충분하지 않습니다.
KDN

답변:


98

주석을 달더라도 기본적 PasswordAuthentication으로 yes 로 설정됩니다 /etc/ssh/sshd_config.

PasswordAuthentication no공개 키 인증 만 허용하도록 명시 적으로 설정해야합니다 .

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no

참고 (man sshd_config) : PasswordAuthentication은 비밀번호 인증 허용 여부를 지정합니다. 기본값은 예입니다.

그리고 sshd service ssh restart(사전 시스템 마이그레이션) 또는을 다시 시작하십시오 systemctl restart sshd.service.


6
또한 우리는UsePAM no
Konstantinos

@pidosaurus 왜? 무엇이 좋은가요?
jan-glx

1
@YAK 나는 일을 단순하게 유지하고 PAM을 사용하지 않는 것을 선호합니다. 그러나 누군가는 올바르게 구성된 PAM 인증을 사용할 수 있습니다. 이 링크가 밝아진 것 같습니다. arlimus.github.io/articles/usepam
Konstantinos

1
ChallengeResponseAuthentication도 비활성화하십시오 ( superuser.com/a/374234/2879 참조) .
cic

13

SSH 키에 대한 이 위키 페이지 와이 답변 에 따르면 다음 두 줄을 다음과 같이 변경해야합니다 sshd_config.

PasswordAuthentication no
ChallengeResponseAuthentication no

1
챌린지 응답의 두 번째 라인은 어떤 차이가 있습니까?
Ryan Burnette

1
""추가 보안 "을 제공하지는 않습니다."ChallengeResponseAuthentication "이라는 용어는 OpenSSH 구성 키워드 일 뿐이며 SSH 프로토콜의"키보드 대화식 "userauth 방법을 말합니다 (Richard Silverman (fixunix.com)
pzkpfw

4

에서 /etc/ssh/sshd_config아래의 설정은 나를 위해 일한 :

PasswordAuthentication no
UsePAM no

마지막으로 sshd데몬을 다시 시작하십시오 .


3

원하는 줄은 기본적으로 sshd_config 파일에서 비정상적으로 주석 처리됩니다.

# Change to no to disable tunnelled clear text passwords
--->#PasswordAuthentication yes

암호를 사용하지 않으려면 변경 yes에를 no하고 주석을 제거 :

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

1

에서 https://www.ssh.com/ssh/copy-id#sec-How-ssh-copy-id-works : 일반적으로, 사용자의 홈 디렉토리 나 파일이나 디렉토리에 들어있는 키 파일을 다른 사람이 쓸 수 안 . 그렇지 않으면 다른 사람이 사용자에게 새로운 인증 된 키를 추가하고 액세스 할 수 있습니다. 개인 키 파일은 다른 사람이 읽을 수 없어야합니다.

적절하게 sudo chmod go-rwx /home/username/교체 하십시오 username.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.