Bagaimana saya memaksa SSH untuk hanya mengizinkan pengguna dengan kunci untuk masuk?

73

Saya mencoba mengikuti petunjuk di sini: http://lani78.wordpress.com/2008/08/08/generate-a-ssh-key-and-disable-password-authentication-on-ubuntu-server/

hanya mengizinkan pengguna dengan kunci publik di server untuk mengautentikasi, tetapi saya tidak bisa meminta SSH untuk melarang masuk dengan hanya nama pengguna / kata sandi.

Ini file sshd_config saya - apakah saya kehilangan sesuatu? Saya sudah mencoba me-restart SSH dan komputer itu sendiri.

# 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
pengguna193805
sumber
1
FYI: Sebenarnya sshd restart tidak terlalu diperlukan. Perintah /etc/inid.d/ssh memuat ulang harus cukup.
Oliv
Jangan lupa batalkan komentar #AuthorizedKeysFile dan salin kunci publik ke ~ / .ssh / Authorized_keys (dan mulai ulang). Tanpa ini, itu tidak akan berhasil.
ivanleoncz
Jika itu tidak benar pada tahun 2016, itu pasti terjadi pada tahun 2019 bahwa diperlukan restart; memuat ulang tidak cukup.
KDN

Jawaban:

98

Secara default PasswordAuthenticationdiatur ke ya , bahkan jika Anda berkomentar /etc/ssh/sshd_config.

Anda harus menetapkan secara eksplisit PasswordAuthentication nountuk hanya mengizinkan Otentikasi Kunci Publik.

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

CATATAN (man sshd_config): PasswordAuthentication menentukan apakah otentikasi kata sandi diizinkan. Standarnya adalah ya.

Dan restart sshd service ssh restart(migrasi pre systemd) atau systemctl restart sshd.service.

Terry Wang
sumber
6
Kita juga harus memilikiUsePAM no
Konstantinos
@pidosaurus mengapa? apa gunanya
jan-glx
1
@YAK Saya suka menjaga hal-hal sederhana dan saya lebih suka tidak menggunakan PAM. Tetapi seseorang dapat menggunakan otentikasi PAM yang dikonfigurasi dengan benar. Saya pikir tautan ini mencerahkan: arlimus.github.io/articles/usepam
Konstantinos
1
Pertimbangkan juga menonaktifkan ChallengeResponseAuthentication, lihat superuser.com/a/374234/2879 .
cic
13

Menurut halaman wiki ini tentang kunci SSH dan jawaban ini , Anda perlu mengubah dua baris ini di sshd_config:

PasswordAuthentication no
ChallengeResponseAuthentication no
Andy J
sumber
1
Apa perbedaan yang dibuat baris kedua tentang respons tantangan?
Ryan Burnette
1
"Itu tidak memberikan" keamanan tambahan, "per se. Istilah" ChallengeResponseAuthentication "hanyalah kata kunci konfigurasi OpenSSH; ini merujuk pada metode userauth" keyboard-interaktif "dalam protokol SSH —Richard Silverman (fixunix.com)
pzkpfw
4

Di /etc/ssh/sshd_config, pengaturan di bawah ini berfungsi untuk saya:

PasswordAuthentication no
UsePAM no

Akhirnya, restart sshddaemon.

BTR Naidu
sumber
3

Baris yang Anda inginkan secara tidak normal dikomentari secara default di file sshd_config.

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

Untuk menonaktifkan kata sandi, ubah yesto nodan hapus komentar :

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
Nolan Hergert
sumber
1

dari https://www.ssh.com/ssh/copy-id#sec-How-ssh-copy-id-works : Secara umum, direktori home pengguna atau file atau direktori apa pun yang berisi file kunci tidak boleh ditulis oleh orang lain . Kalau tidak, orang lain bisa menambahkan kunci resmi baru untuk pengguna dan mendapatkan akses. File kunci pribadi seharusnya tidak dapat dibaca oleh orang lain.

Cobalah dengan sudo chmod go-rwx /home/username/mengganti yang usernamesesuai.

Diego Alonso Reyes Molina
sumber