Nonaktifkan otentikasi kata sandi untuk SSH


127

Saya mencari cara untuk menonaktifkan klien SSH agar tidak mengakses prompt kata sandi seperti yang disebutkan di sini .

Saya tidak dapat menonaktifkan password:prompt untuk login root . Saya telah mengubah sshd_configfile menjadi:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

dan juga telah mengubah izin chmod 700 ~/.sshdan chmod 600 ~/.ssh/authorized_keys. Apa yang saya lewatkan? Apakah ini mengharuskan saya memiliki frasa sandi?

Sampah verbose:

debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug1: Trying private key: /home/user/.ssh/id_ecdsa
debug1: Next authentication method: password

Berkas / etc / ssh / sshd_config:

# 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 no
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

ssh -v user @ server untuk mendapatkan keluaran panjang guna membantu Anda memecahkan masalah.
Niall Byrne

Keduanya ssh_configdan sshd_configmemiliki PasswordAuthentication- tetap tajam!
Brent Bradburn

Jawaban:


199

Dalam file /etc/ssh/sshd_config

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

Hapus komentar di baris kedua, dan, jika perlu, ubah ya menjadi tidak.

Lalu lari

service ssh restart

7
Banyak panduan menyarankan untuk mengubah ChallengeResponseAuthentication, PasswordAuthentication, UsePAM dari ya ke tidak di server. Berhasil diuji di bawah Debian / Ubuntu.

9
FYI, cara systemd untuk memulai ulang layanan adalah: systemctl restart sshdIni adalah default pada Ubuntu yang lebih baru.
therealjumbo

Bagaimana cara menambahkan kunci baru ke server, sementara otentikasi kata sandi dinonaktifkan? Tentunya ada cara untuk melakukan ini, tanpa harus mengaktifkan otentikasi kata sandi, setiap kali seseorang ingin menambahkan kunci ...
Matius

1
@Matthew Mungkin menggunakanssh-copy-id
iamyojimbo

@iamyojimbo tetapi Anda masih memerlukan kunci resmi untuk dapat terhubung dan mengirimnya dengan perintah itu.
Matius

16

Lari

service ssh restart

dari pada

/etc/init.d/ssh restart

Ini mungkin berhasil.


Ini berhasil untuk saya; ada ide mengapa menggunakan init.d tidak?
Seb

1
Tergantung pada rasa linux Anda ... Di gentoo, keduanya cocok untuk saya.
Gene Pavlovsky

15

Berikut skrip untuk melakukan ini secara otomatis

# Only allow key based logins
sed -n 'H;${x;s/\#PasswordAuthentication yes/PasswordAuthentication no/;p;}' /etc/ssh/sshd_config > tmp_sshd_config
cat tmp_sshd_config > /etc/ssh/sshd_config
rm tmp_sshd_config

3

Saya mengikuti langkah-langkah ini (untuk Mac).

Dalam /etc/ssh/sshd_configperubahan

#ChallengeResponseAuthentication yes
#PasswordAuthentication yes

untuk

ChallengeResponseAuthentication no
PasswordAuthentication no

Sekarang buat kunci RSA:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

(Bagi saya kunci RSA berfungsi. Kunci DSA tidak berfungsi.)

Kunci pribadi akan dibuat ~/.ssh/id_rsabersama dengan ~/.ssh/id_rsa.pub(kunci publik).

Sekarang pindah ke folder .ssh :cd ~/.ssh

Enter rm -rf authorized_keys(terkadang beberapa kunci menyebabkan kesalahan).

Memasukkan vi authorized_keys

Enter :wquntuk menyimpan file kosong ini

Memasukkan cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Mulai ulang SSH:

sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd

Tidak dapatkah Anda menggunakan touchuntuk membuat file kosong authorized_keys?
Peter Mortensen

-8

Ini dari tutorial yang saya miliki:

Di mesin Anda sebagai root:

ssh-keygen -t rsa

Dan biarkan frasa sandi kosong.

Dari mesin lokal Anda (dan Anda harus mengetikkan kata sandi):

ssh root@remotemachine mkdir -p .ssh

Kemudian:

cat .ssh/id_rsa.pub | ssh root@remotemachine 'cat >> .ssh/authorized_keys'

Sekarang Anda dapat masuk tanpa permintaan kata sandi

ssh root@remotemachine

Lihat login SSH tanpa kata sandi jika Anda mengalami masalah!


2
Saya ingin memblokir permintaan kata sandi agar tidak muncul dalam setiap keadaan. Paksa login hanya melalui kunci ssh
Matt Stokes

Ini harus dilakukan. Ini akan terbuka secara langsung tanpa meminta Anda memasukkan kata sandi tetapi dari klien tertentu.
Fabrizio Mazzoni

1
ya tapi ini juga akan memungkinkan klien yang tidak berwenang untuk mencoba kata sandi, bukan?
Matt Stokes

Ubah berikut ini: ChallengeResponseAuthentication no, PasswordAuthentication no, UsePAM no Ini hanya akan mengizinkan autentikasi kunci. Baru saja diuji pada sistem saya dan akan ditolak dengan: Izin ditolak (kunci publik)
Fabrizio Mazzoni

1
Anda belum menghapus komentar bagian PasswordAuthentication no jika file yang Anda posting adalah konfigurasi yang sebenarnya
Fabrizio Mazzoni
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.