Wie behebt man die SSH-Anmeldung, die nach dem Passwort fragt und `ls .ssh` die Berechtigung verweigert?

Ich verwende meinen Mac, um mich über Terminal.app bei Remote-Hosts anzumelden, indem ich sshlokal gespeicherte Schlüssel, auch bekannt als passwortlose Anmeldung, alias Authentifizierungsschlüssel-Anmeldung, verwende.

Plötzlich sshsind die neuen Anmeldeversuche:

  1. nach dem Passwort fragen, wo vorher die Anmeldungen passwortlos waren
  2. zurückkehrenThe authenticity of host XYZ can't be established.
  3. ja Beantwortung Are you sure you want to continue connecting (yes/no)?
    ergibt Failed to add the host to the list of known hosts (/Users/user/.ssh/known_hosts).

ls ~/.sshErgibt auch alle "Erlaubnis verweigert":

ls: authorized_keys: Permission denied
ls: config: Permission denied
ls: id_rsa: Permission denied
ls: id_rsa.pub: Permission denied
ls: known_hosts: Permission denied

Wie kann man das beheben?

TL;DR: Version: Frage: Die Berechtigungen sind falsch. Antwort: Korrigieren Sie die Berechtigungen.
@Jakuje Was bedeutet "TL; DR"?
[ en.wikipedia.org/wiki/… tl;dr und tldr;))

Antworten (1)

Falsche Dateiberechtigungen

Für einige Dateien im .ssh-Ordner wurden falsche Berechtigungen festgelegt. Schauen Sie es sich von Terminal.app an:

$ sudo ls -l ~/.ssh
-rw-r--r--+ 1 user  staff    393 27 nov 19:08 authorized_keys
-rw-r--r--+ 1 user  staff     16 26 apr  2016 config
-rw-------@ 1 user  staff   1743 16 sep  2008 id_rsa
-rw-r--r--@ 1 user  staff    400 16 sep  2008 id_rsa.pub
-rw-r--r--@ 1 user  staff  36654 26 nov 17:02 known_hosts

Die erste Spalte ( -rw-r--r--) zeigt die zugewiesenen Unix-Dateiberechtigungen für Eigentümer, Gruppe und andere an.

Leserechte für Gruppe und andere sind nicht erlaubt

Das eigentliche Problem hier ist nicht das erste ran Position 2 der Spalten, sondern das r' an Position 5 und 8. Dies zeigt an, dass die Gruppe und andere Leseberechtigungen für diese Dateien haben. Und diese Leseberechtigung für andere als den Eigentümer der Datei ist nicht zulässig.

Fix

Es kann behoben werden, indem alle Rechte von Gruppe und Jeder mit dem Befehl entfernt werden chmod 600 filename. Für diesen speziellen Fall wäre ein Befehl, der funktionieren würde:

$ sudo chmod 600 ~/.ssh/{authorized_keys,config,id_rsa.pub,known_hosts}

Ergebnis

Nach dem Ausführen dieses Befehls sehen die neuen Berechtigungen so aus:

$ ls -l ~/.ssh
total 104
-rw-------+ 1 user  staff   393B 27 nov 19:08 authorized_keys
-rw-------+ 1 user  staff    16B 26 apr  2016 config
-rw-------+ 1 user  staff   1,7K 16 sep  2008 id_rsa
-rw-------+ 1 user  staff   400B 16 sep  2008 id_rsa.pub
-rw-------+ 1 user  staff    36K 26 nov 17:02 known_hosts 

Hinweis: Der lsBefehl wird jetzt ohne ausgeführt sudo.

Sie sollten Lesezugriff auf Ihre öffentlichen Schlüssel haben.