Berechtigungen für privaten Schlüssel im Ordner .ssh?

381

Ich habe meine Berechtigungen in meinem .sshOrdner geändert. Wenn ich jetzt eine Software verwende, die meinen privaten Schlüssel verwendet, muss ich jedes Mal mein Kennwort eingeben. Welche Berechtigungen muss meine id_rsaDatei haben, damit ich nicht jedes Mal ein Kennwort eingeben muss, wenn ich eine App verwende, die es verwendet?

Derzeit sind meine Berechtigungen auf Folgendes festgelegt:

-rw-------@ 1 Jody  staff   114 Nov  4 23:29 config
-rw-------  1 Jody  staff  1743 Oct 21  2009 id_rsa
-rw-------@ 1 Jody  staff   397 Oct 21  2009 id_rsa.pub 
-rw-------@ 1 Jody  staff  3855 Sep 13 22:35 known_hosts
JakeGould
quelle

Antworten:

640

In der Regel möchten Sie, dass die Berechtigungen wie folgt lauten:

  • .ssh Verzeichnis: 700 (drwx------)
  • öffentlicher Schlüssel ( .pubDatei):644 (-rw-r--r--)
  • privater Schlüssel ( id_rsa):600 (-rw-------)
  • Schließlich sollte Ihr Home-Verzeichnis nicht von der Gruppe oder anderen (höchstens 755 (drwxr-xr-x)) beschrieben werden können.

Ich gehe davon aus, dass Sie damit meinen, dass Sie jedes Mal Ihr System- / Benutzerpasswort eingeben müssen und dies zuvor nicht mussten. Bei der Antwort von cdhowie wird davon ausgegangen, dass Sie beim Generieren Ihrer Schlüssel ein Passwort / eine Passphrase festgelegt haben. Wenn Sie dies getan haben, müssen Sie, wie er sagt, jedes Mal Ihr Passwort eingeben, es sei denn, Sie verwenden einen ssh-Agenten.

Fabs
quelle
13
Ich habe an anderer Stelle festgestellt, dass die Datei authorized_keys auf 640 geändert werden sollte, dh -rw-r -----.
AnneTheAgile
5
Wo finde ich diese Informationen in Manpages?
Sonique
131
Ich bin jetzt ungefähr 30 Mal auf diesen Beitrag zurückgekommen. Ich kann nicht glauben, dass ich mich nicht daran erinnern kann.
JREAM
7
Die einzigen wichtigen Dinge sind, dass nichts in .ssh für andere Personen schreibbar ist und keiner der geheimen Schlüssel für andere Personen lesbar ist.
Markus Kuhn
5
Mit der @Cerin-Ausführungsberechtigung für ein Verzeichnis können sofort untergeordnete Dateien / Verzeichnisse dieses Verzeichnisses aufgelistet werden. Dateien im Ordner "erben" nicht das Ausführungsbit des übergeordneten Ordners.
Thomas
87

Ich kämpfte für immer damit und fand schließlich heraus, was gebraucht wird. Ersetzen Sie sie $USERüberall durch den SSH-Benutzernamen, bei dem Sie sich am Server anmelden möchten. Wenn Sie versuchen, sich anzumelden, wie rootSie es brauchen würden /root/.sshusw., anstatt /home/root/.sshwie es für Nicht-Root-Benutzer ist.

  • Das Basisverzeichnis auf dem Server darf nicht von anderen beschrieben werden: chmod go-w /home/$USER
  • Der SSH-Ordner auf dem Server benötigt 700 Berechtigungen: chmod 700 /home/$USER/.ssh
  • Authorized_keys-Datei benötigt 644 Berechtigungen: chmod 644 /home/$USER/.ssh/authorized_keys
  • Stellen Sie sicher, dass userdie Dateien / Ordner und nicht root: chown user:user authorized_keysund gehörenchown user:user /home/$USER/.ssh
  • Legen Sie den generierten öffentlichen Schlüssel (von ssh-keygen) in der Benutzerdatei authorized_keysauf dem Server ab
  • Stellen Sie sicher, dass das Basisverzeichnis des Benutzers auf das von Ihnen erwartete Verzeichnis eingestellt ist und den richtigen .sshOrdner enthält, den Sie geändert haben. Wenn nicht, verwenden Sie usermod -d /home/$USER $USER, um das Problem zu beheben
  • Zum Schluss starte ssh neu: service ssh restart
  • Stellen Sie dann sicher, dass der Client über die Dateien mit dem öffentlichen Schlüssel und dem privaten Schlüssel im .sshOrdner des lokalen Benutzers verfügt, und melden Sie sich an:ssh [email protected]
Alex W
quelle
In Bezug auf Ihren ersten Absatz bin ich in der Lage, mit öffentlichen / privaten Schlüsseln mit einem Benutzer auf meiner lokalen Linux-Box (z. B. abc) zu sshen , der sich vom Benutzer auf dem Remote-Server (z [email protected]. B. ) unterscheidet. Ich musste nur sicherstellen, dass der lokale Benutzer die lokalen .ssh-Dateien besaß (z. B. abc:abcnicht root:abc)
Michael
1
Danke, dass du alle Schritte und Befehle für Neulinge ausgeführt hast, Alex. Ihre ist eine der hilfreichsten Antworten hier.
Nav
6
+1. "Authorized_keys-Datei benötigt 644 Berechtigungen" <= das war entscheidend!
Le Quoc Viet
Wenn Sie geben .ssh Verzeichnis 700 - Modus, dann gibt es keinen Grund zu geben r-- zu Gruppe und anderen, weil nur Sie können „durchlaufen“ .ssh dann (sofern keine harten Links für diese Dateien vorhanden ist ). Das gleiche gilt für die akzeptierte Antwort. Standard 755 ist genug.
User3125367
400 für die pem dateien reichen meiner erfahrung nach aus.
AT
37

Stellen Sie außerdem sicher, dass Ihr Basisverzeichnis nicht von anderen Benutzern beschrieben werden kann.

chmod g-w,o-w ~

Felipe Alvarez
quelle
8
Zu Ihrer Information, dieser Befehl setzt voraus, dass Sie als Benutzer und nicht als root angemeldet sind
Alex W
6

Berechtigungen sollten damit nichts zu tun haben. Ihr privater Schlüssel ist mit dem Kennwort verschlüsselt. Sie müssen ihn eingeben, damit der private Schlüssel entschlüsselt und verwendet werden kann.

Sie können einen ssh-Agenten ausführen, der entschlüsselte Schlüssel zwischenspeichert und sie an Anwendungen weiterleitet, die sie benötigen.

cdhowie
quelle
Vielen Dank für die zusätzlichen Informationen zum ssh-Agenten. Es sieht so aus, als ob in Leopard eine eingebaut ist, also denke ich, dass ich das mache. Ich habe ein bisschen Probleme damit, aber ich werde eine andere Frage stellen.
5
Unterschätzen Sie die Berechtigungen nicht. Sie kommen definitiv noch ins Spiel.
Alex W
@AlexW Sie kommen mit anderen Aspekten von ssh ins Spiel, aber nicht mit dem, nach dem in der Frage gefragt wurde.
cdhowie
Wenn Sie kein Passwort für private Schlüssel haben (was für automatisierte Remote-Skripte), hilft es Ihnen nicht. Hier sind Berechtigungen erforderlich.
Nerdoc
"Ich muss jedes Mal mein Passwort eingeben. Welche Berechtigungen muss meine id_rsa-Datei haben, damit ich nicht jedes Mal ein Passwort eingeben muss, wenn ich eine App verwende, die es verwendet?"
Craig Hicks
4

Felipe ist korrekt - das Verzeichnis, in dem sich Ihr .ssh-Verzeichnis befindet, darf nicht für Gruppen oder andere Personen beschreibbar sein. So chmod go-w ~ist die nächste logische Sache , um zu versuchen , wenn Sie immer noch nach einem Passwort gefragt werden , wenn nach dem Ausführen ssh'ing ssh-keygen -t rsa; cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys, vorausgesetzt , Sie kein Passwortes in dem Befehl ssh-keygen zuordnen und das .ssh - Verzeichnis in Ihrem Home - Verzeichnis.

mikentalk
quelle