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


Ich habe meine Berechtigungen in meinem geändert .ssh Ordner und jetzt, wenn ich eine Software verwende, die meinen privaten Schlüssel verwendet, muss ich jedes Mal mein Passwort eingeben. Was sollten meine Berechtigungen sein? id_rsa Datei, um nicht jedes Mal ein Passwort eingeben zu müssen, wenn ich eine App verwende, die es verwendet?

Derzeit sind meine Berechtigungen auf:

-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

276
2017-11-26 22:04


Ursprung




Antworten:


Normalerweise möchten Sie das .ssh Verzeichnisberechtigungen sein 700 (drwx------) und der öffentliche Schlüssel (.pub Datei) sein 644 (-rw-r--r--). Ihr privater Schlüssel (id_rsa) sollte sein 600 (-rw-------). Schließlich sollte Ihr Home-Verzeichnis nicht von der Gruppe oder anderen (höchstens) beschreibbar sein 755 (drwxr-xr-x)).

Ich gehe davon aus, dass Sie meinen, dass Sie jedes Mal Ihr System- / Benutzerpasswort eingeben müssen, und dass Sie zuvor nicht müssen. Die Antwort von cdhowie setzt voraus, dass Sie beim Generieren Ihrer Schlüssel ein Passwort / eine Passphrase festgelegt haben. Wenn Sie dies getan haben, müssen Sie Ihr Passwort jedes Mal eingeben, wenn Sie keinen ssh-Agenten verwenden.


480
2017-11-26 22:24



Ich fand anderswo, dass, wenn die authorized_keys-Datei verwendet wird, es auf 640 chmod'd sein sollte, dh -rw-r -----. - AnneTheAgile
Wo finde ich diese Informationen in Manpages? - Sonique
Ich bin jetzt ungefähr 30 Mal zu diesem Post zurückgekommen. Ich kann nicht glauben, dass ich mich nicht daran erinnern kann. - JREAM
Die einzigen wichtigen Dinge sind, dass nichts in .ssh für irgendjemand anders beschreibbar ist und keiner der geheimen Schlüssel für irgendjemand anderen lesbar ist. - Markus Kuhn
@Cerin execute-Berechtigung für ein Verzeichnis gewährt die Möglichkeit, direkt untergeordnete Dateien / Verzeichnisse dieses Verzeichnisses aufzulisten, Dateien innerhalb des Ordners "erben" nicht das Ausführungsbit ihres übergeordneten Ordners. - Thomas


Ich kämpfte mit diesem für immer und schließlich herausgefunden, was benötigt wird. Ersetzen $USER überall mit dem SSH-Benutzernamen, mit dem Sie sich auf dem Server anmelden möchten. Wenn Sie versuchen, sich als einzuloggen root Sie müssten verwenden /root/.ssh usw., statt /home/root/.ssh So ist es für Nicht-Root-Benutzer.

  • Home-Verzeichnis auf dem Server sollte nicht von anderen beschreibbar sein: 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
  • Stelle sicher das user besitzt die Dateien / Ordner und nicht root: chown user:user authorized_keys und chown user:user /home/$USER/.ssh
  • Setzen Sie den generierten öffentlichen Schlüssel (aus ssh-keygen) im Benutzer authorized_keys Datei auf dem Server
  • Stellen Sie sicher, dass das Basisverzeichnis des Benutzers auf das festgelegt ist, was Sie erwarten und dass es das richtige enthält .ssh Ordner, den Sie geändert haben. Wenn nicht, verwenden Sie usermod -d /home/$USER $USER um das Problem zu beheben
  • Starten Sie ssh schließlich neu: service ssh restart
  • Stellen Sie dann sicher, dass der Client die Dateien für den öffentlichen Schlüssel und den privaten Schlüssel im lokalen Benutzer hat .ssh Ordner und Login: ssh user@host.com

62
2018-06-09 20:39



In Bezug auf Ihren ersten Absatz kann ich mit öffentlichen / privaten Schlüsseln mit einem Benutzer auf meiner lokalen Linux-Box ssh (z. B. abc), anders als der Benutzer auf dem entfernten Server (z.B. def@123.456.789). Ich musste nur sicherstellen, dass der lokale Benutzer die lokalen .ssh-Dateien besaß (z. abc:abcnicht root:abc) ` - Michael
Danke, dass du alle Schritte und Befehle für Anfänger gemacht hast, Alex. Ihre ist eine der hilfreichsten Antworten hier. - Nav
+1. "Authorized_keys Datei benötigt 644 Berechtigungen" <= das war entscheidend! - Le Quoc Viet
Wenn Sie das .ssh-Verzeichnis angeben 700 Modus, dann gibt es kein Punkt r - zu gruppieren und andere, weil nur du kann ".ssh" dann "durchlaufen" (unter der Annahme, dass für diese Dateien keine Hardlinks existieren). Das gleiche gilt für die angenommene Antwort. Standard 755 ist genug. - user3125367


Stellen Sie außerdem sicher, dass Ihr Home-Verzeichnis nicht von anderen Benutzern beschreibbar ist.

chmod g-w,o-w ~


31
2018-01-03 03:50



Zu Ihrer Information: Bei diesem Befehl wird davon ausgegangen, dass Sie als Benutzer und nicht als Root angemeldet sind - Alex W


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

Sie könnten in Erwägung ziehen, einen SSH-Agenten auszuführen, der entschlüsselte Schlüssel zwischenspeichern kann und diese Anwendungen zur Verfügung stellt, die sie benötigen.


4
2017-11-26 22:07



Danke für die zusätzlichen Informationen über den ssh-Agenten. Sieht so aus, als wäre in Leopard ein eingebaut, also denke ich, dass ich das machen werde. Ein bisschen Ärger damit, aber ich werde eine andere Frage stellen.
Unterschätzen Sie die Berechtigungen nicht. Sie kommen definitiv noch ins Spiel. - Alex W
@AlexW Sie kommen mit anderen Aspekten von ssh in Kontakt, aber nicht mit dem, um den es in der Frage geht. - cdhowie
Wenn Sie kein Passwort für private Schlüssel haben (was von automatisierten Remote Scripts genannt wird), wird es Ihnen nicht helfen. Berechtigungen sind hier notwendig. - nerdoc


Felipe ist korrekt - das Verzeichnis, das dein .ssh-Verzeichnis enthält, darf nicht nach Gruppe oder anderem beschreibbar sein. So chmod go-w ~ ist die nächste logische Sache zu versuchen, wenn Sie immer noch aufgefordert werden, ein Passwort, wenn ssh'ing nach dem Ausführen ssh-keygen -t rsa; cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys, vorausgesetzt, Sie weisen im Befehl ssh-keygen keine Passphrase zu und Ihr .ssh-Verzeichnis befindet sich in Ihrem Home-Verzeichnis.


4
2018-04-17 20:20