Deaktivieren Sie die Kennwortauthentifizierung für SSH

127

Ich bin auf der Suche nach einem Weg zu deaktivieren SSH - Clients den Zugriff auf die Kennwort - Eingabeaufforderung wie erwähnt hier .

Ich kann die password:Eingabeaufforderung für die Root-Anmeldung nicht deaktivieren . Ich habe die sshd_configDatei zum Lesen geändert :

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

und haben auch die Berechtigungen geändert chmod 700 ~/.sshund chmod 600 ~/.ssh/authorized_keys. Was vermisse ich? Benötige ich dafür eine Passphrase?

Ausführlicher Dump:

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

Datei / 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
Matt Stokes
quelle
ssh -v user @ server, um eine ausführliche Ausgabe zur Fehlerbehebung zu erhalten.
Niall Byrne
Beides ssh_configund sshd_confighaben PasswordAuthentication- scharf bleiben!
Brent Bradburn

Antworten:

198

Im Ordner /etc/ssh/sshd_config

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

Kommentieren Sie die zweite Zeile aus und ändern Sie bei Bedarf Ja in Nein.

Dann renne

service ssh restart
Kimvais
quelle
7
In vielen Handbüchern wird empfohlen, ChallengeResponseAuthentication, PasswordAuthentication und UsePAM auf dem Server von Ja auf Nein zu ändern. Erfolgreich unter Debian / Ubuntu getestet.
9
Zu Ihrer Information, der systemd Weg, um den Dienst neu zu starten, ist: systemctl restart sshdDies ist die Standardeinstellung unter neuerem Ubuntu.
Therealjumbo
Wie füge ich dem Server neue Schlüssel hinzu, während die Kennwortauthentifizierung deaktiviert ist? Sicher gibt es eine Möglichkeit, dies zu tun, ohne die Passwortauthentifizierung aktivieren zu müssen, jedes Mal, wenn jemand einen Schlüssel hinzufügen möchte ...
Matthew
1
@ Matthew Vielleicht mitssh-copy-id
iamyojimbo
@iamyojimbo, aber Sie benötigen noch einen autorisierten Schlüssel, um eine Verbindung herstellen und einen mit diesem Befehl senden zu können.
Matthew
16

Lauf

service ssh restart

anstatt

/etc/init.d/ssh restart

Das könnte funktionieren.

Satoshi Nakanishi
quelle
Das hat bei mir funktioniert; Irgendwelche Ideen, warum die Verwendung von init.d nicht funktioniert hat?
Seb
1
Kommt auf deinen Linux-Geschmack an ... Auf Gentoo arbeiten beide für mich.
Gene Pavlovsky
15

Hier ist ein Skript, um dies automatisch zu tun

# 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
JasonS
quelle
3

Ich habe diese Schritte befolgt (für Mac).

Im /etc/ssh/sshd_configWechsel

#ChallengeResponseAuthentication yes
#PasswordAuthentication yes

zu

ChallengeResponseAuthentication no
PasswordAuthentication no

Generieren Sie nun den RSA-Schlüssel:

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

(Bei mir hat ein RSA-Schlüssel funktioniert. Ein DSA- Schlüssel hat nicht funktioniert.)

Ein privater Schlüssel wird ~/.ssh/id_rsazusammen mit ~/.ssh/id_rsa.pub(öffentlicher Schlüssel) generiert .

Wechseln Sie nun in den Ordner .ssh :cd ~/.ssh

Enter rm -rf authorized_keys(manchmal führen mehrere Tasten zu einem Fehler).

Eingeben vi authorized_keys

Geben Sie ein :wq, um diese leere Datei zu speichern

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

Starten Sie die SSH neu:

sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd
Anand Prakash
quelle
Können Sie nicht touchdie leere Datei erstellen authorized_keys?
Peter Mortensen
-8

Dies ist aus einem Tutorial, das ich habe:

Auf Ihrem Computer als Root:

ssh-keygen -t rsa

Und lassen Sie die Passphrase leer.

Von Ihrem lokalen Computer (und Sie müssen ein Passwort eingeben):

ssh root@remotemachine mkdir -p .ssh

Dann:

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

Jetzt können Sie sich ohne Passwortabfrage anmelden

ssh root@remotemachine

Siehe SSH-Login ohne Passwort, falls Sie Probleme haben sollten!

Fabrizio Mazzoni
quelle
2
Ich möchte verhindern, dass die Passwortabfrage unter allen Umständen angezeigt wird. Erzwingen Sie die Anmeldung nur über den SSH-Schlüssel
Matt Stokes
Das sollte es tun. Es wird direkt geöffnet, ohne dass Sie zur Eingabe eines Kennworts aufgefordert werden, jedoch von einem bestimmten Client.
Fabrizio Mazzoni
1
Ja, aber dies ermöglicht auch Clients, die nicht berechtigt sind, ein Passwort zu versuchen, nicht wahr?
Matt Stokes
Ändern Sie Folgendes: ChallengeResponseAuthentication-Nr., PasswordAuthentication-Nr., UsePAM-Nr. Dies ermöglicht nur die Schlüsselauthentifizierung. Gerade auf meinem System getestet und es wird verweigert mit: Berechtigung verweigert (öffentlicher Schlüssel)
Fabrizio Mazzoni
1
Sie haben den Abschnitt PasswordAuthentication no nicht auskommentiert, wenn die von Ihnen veröffentlichte Datei die tatsächliche Konfiguration aufweist
Fabrizio Mazzoni