SSH fragt nach dem Einrichten der schlüsselbasierten Authentifizierung weiterhin nach dem Kennwort

10

Ich habe erfolgreich eine schlüsselbasierte Authentifizierung für Root-Benutzer von meinem A-Computer auf meinen B-Computer erstellt.

Jetzt habe ich auf der B-Maschine einen neuen Benutzer erstellt, genau wie auf der A-Maschine. Rufen wir ihn an USER. Ich habe ein Home-Verzeichnis für ihn auf der B-Maschine erstellt /home/USERund möchte eine schlüsselbasierte Authentifizierung für ihn von Maschine A bis B-Maschine erstellen.

Also lief ich auf einer Maschine

  1. ssh-keygen -t rsa, akzeptierte alle Pfade, so /home/USER/.ssh/id_rsaund ohne Phrasen
  2. ssh-copy-id -i /home/USER/.ssh/id_rsa.pub USER@BmachinesIP, Passwort eingegeben und Massage bekommen

Versuchen Sie nun, sich in die Maschine einzuloggen

Also scheint alles in Ordnung zu sein.

Aber als ich versuchte, eine Verbindung ssh USER@BmachinesIPherzustellen, wurde ich nach einem Passwort gefragt. Ich habe versucht, das Protokoll zu sehen und bin gelaufen. ssh -vvv USER@BmachinesIPHier ist ein Teil der Ausgabe:

debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/USER/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/USER/.ssh/id_dsa
debug3: no such identity: /home/USER/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
USER@BmachinesIP's password:

Kann mir jemand sagen, was ich falsch gemacht habe oder was ich ändern sollte? Vielleicht liegt das Problem in den Berechtigungen, hier sind sie:

auf einer Maschine:

drwx------  2 USER USER    SIZE DATE TIME .ssh
-rw-------  1 USER USER 1675 2011-10-31 14:36 id_rsa
-rw-r--r--  1 USER USER 413 2011-10-31 14:36 id_rsa.pub

und auf B-Maschine:

drwx------  2 USER defaultGroup    SIZE DATE TIME .ssh
-rw-------    1 USER defaultGroup    SIZE DATE TIME authorized_keys
Tratto
quelle

Antworten:

13

Ich habe eine Lösung gefunden. Es gab ein Problem mit den Berechtigungen.

/home/USER Auf einem Remotecomputer wurden alle Berechtigungen erteilt, für die schlüsselbasierte Authentifizierung muss jedoch 755 festgelegt werden

Tratto
quelle
2
Beeindruckend. Erstaunlich, dass es keine Debug-Ausgabe für Berechtigungen gibt, obwohl diese für die ordnungsgemäße Konfiguration des öffentlichen Schlüssels von zentraler Bedeutung sind.
Jchook
Wow, du hast recht. Jetzt funktioniert es ... obwohl ich wirklich die Erlaubnis behalten möchte, die es ursprünglich hatte (775). Irgendwelche Hinweise, wie man das ändern kann?
Pablo Olmos de Aguilera C.
Es scheint, dass es keine Möglichkeit gibt, nur die Problemumgehung würde die StrictModes no in sshd_config setzen. : /.
Pablo Olmos de Aguilera C.
2
Im Wesentlichen benötigen Sie diese Berechtigungen : chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys, dann funktioniert es. Von der Antwort von Maxime R. von hier kopiert
erik
2
Ich habe alle diese Berechtigungsänderungen vorgenommen und frage mich immer noch nach einem Passwort, wenn ich ssh. Ich habe auch überprüft, dass der private Schlüssel auf beiden Computern (Ubuntu) gleich ist. Ziemlich verwirrt.
Amalgovinus
2

Gleiches Problem für mich Neuinstallation von CentOS7.

1. Überprüfen Sie die Berechtigungen für das Ausgangsverzeichnis und die Berechtigungen ~ / .ssh und ~ / .ssh / authorized_keys (gemäß @erik).

chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys

2. Überprüfen Sie die Einstellungen für / etc / ssh / sshd_config && service sshd restart (nach jeder Bearbeitung). Nützlich: Versuchen Sie "LogLevel VERBOSE" in sshd_config.

Ich habe immer noch eine Passwortabfrage erhalten, nachdem ich alles überprüft habe, was in Ordnung war.

Führen Sie den SSH-Client mit -vvv-Protokollen aus:

debug3: send_pubkey_test 
debug2: we sent a publickey packet, wait for reply

Serverprotokolle (/ var / log / secure):

Failed publickey for * from * port * ssh2: RSA *

Der SSH-Server sendet keine weiteren Fehlerinformationen an den Client, da dies ein Sicherheitsrisiko darstellen würde.

Wenn ich sshd auf einem anderen Port ausgeführt habe 'sshd -p 5555 -d'. Der Schlüssel hat funktioniert. Passwortloses Login ok. WTF?

Dann habe ich selinux deaktiviert (setze SELINUX = deaktiviert in / etc / selinux / config) und neu gestartet. Das passwortlose Login funktionierte dann einwandfrei.

Meine aktuellen Einstellungen für sshd_config:

[root@hp-bl-05 ~]# grep -vE "^#|^$" /etc/ssh/sshd_config  
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
SyslogFacility AUTHPRIV
LogLevel VERBOSE
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys
HostbasedAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
UseDNS no
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem   sftp    /usr/libexec/openssh/sftp-server

Es wäre also schön zu wissen, ob wir in Selinux etwas Kleines ändern könnten, damit das passwortlose SSH-Login funktioniert. Kann jemand die Antwort verbessern?

gaoithe
quelle
0

Die Lösung besteht nicht darin, SELinux zu deaktivieren, sondern die SELinux-Berechtigungen des Benutzerverzeichnisses zu korrigieren. Der Benutzerverzeichniskontext muss auf eingestellt sein user_home_t.

Überprüfen,

$ sudo ls -Z /home/

Wenn der Kontext für Ihr Benutzerverzeichnis user_home_tanders ist als , würde SELinux SSH über einen öffentlichen Schlüssel für diesen Benutzer nicht in dieses Benutzerverzeichnis zulassen.

Reparieren,

$ sudo semanage fcontext -a -t user_home_t /home/azureuser
$ sudo restorecon -vvRF /home/azureuser

Die schlüsselbasierte Anmeldung sollte jetzt funktionieren.

sentifool
quelle