ssh Fehler "Berechtigungen sind zu offen"


2053

Ich hatte ein Problem mit meinem Mac, bei dem ich keine Datei mehr auf der Festplatte speichern konnte. Ich musste OSX Lion neu starten und die Berechtigungen für Dateien und Acls zurücksetzen.

Aber jetzt, wenn ich ein Repository festschreiben möchte, erhalte ich den folgenden Fehler von ssh:

Permissions 0777 for '/Users/username/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

Welche Berechtigungsstufen sollte ich der Datei id_rsa geben?


19
Vielen Dank, dass Sie die Frage gestellt haben. Eine bessere Erfahrung wäre, wenn derjenige, der diese Fehlermeldung geschrieben hat, einige gültige Konfigurationen vorschlägt (z. B. 600 oder 400, wie unten vorgeschlagen). Programmierer, die nicht ausreichend vollständige Fehlermeldungen schreiben, die hilfreich sind, quälen uns alle seit Jahren!
George Pligoropoulos

FWIW, ist dies im Zusammenhang mit StrictModeswird auf dem freigegebenen sshdServer, von dem man Seite: „StrictModes Gibt an, ob sshd (8) sollten vor der Annahme Login Dateimodi und das Eigentum an die Dateien des Benutzers und Home - Verzeichnis überprüfen.“ - Sie können dies deaktivieren, jedoch nicht empfohlen.
Masseyb

Antworten:


3471

Schlüssel müssen nur für Sie lesbar sein:

chmod 400 ~/.ssh/id_rsa

Wenn Schlüssel von Ihnen lesbar und beschreibbar sein müssen:

chmod 600 ~/.ssh/id_rsa

600 scheint ebenfalls in Ordnung zu sein (in den meisten Fällen sogar besser, da Sie die Dateiberechtigungen später nicht ändern müssen, um sie zu bearbeiten).

Der relevante Teil aus der Manpage ( man ssh)

 ~/.ssh/id_rsa
         Contains the private key for authentication.  These files contain sensitive 
         data and should be readable by the user but not
         accessible by others (read/write/execute).  ssh will simply ignore a private 
         key file if it is              
         accessible by others.  It is possible to specify a
         passphrase when generating the key which will be used to encrypt the sensitive 
         part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_ecdsa.pub
 ~/.ssh/id_rsa.pub
         Contains the public key for authentication.  These files are not sensitive and 
         can (but need not) be readable by anyone.

299
400 ist zu niedrig, da es für Ihren eigenen Benutzer nicht beschreibbar ist. 600 wird tatsächlich empfohlen, da der Besitzer nicht nur lesen, sondern auch lesen und schreiben kann.
jfreak53

8
Ich habe heute festgestellt, dass es Zeiten gibt, in denen 400 relevant sind. Angenommen, Sie haben eine Datei "authorized_keys", für die die Funktionen " no-pty et al" festgelegt sind. Wenn die Datei beschreibbar ist, kann der Benutzer die Datei "authorized_keys" tatsächlich überschreiben und interaktiven Shell-Zugriff erhalten! Etwas zu beachten, obwohl dies für die meisten Leute sicherlich nicht der Fall ist.
Quickshiftin

17
AWS empfiehlt tatsächlich die Erlaubnis 400 auf seiner Website. Das habe ich unter OS X gemacht und es hat funktioniert.
George Mylonas

5
Dies funktioniert definitiv und ist sicherer. Der einzige Nachteil ist, dass Sie es zum Bearbeiten auf 600 ändern müssen. Für id_rsa und id_rsa.pub bezweifle ich, dass dies wichtig ist, da Sie diese Dateien selten bearbeiten werden, aber für autorisierte_Tasten könnte dies ärgerlich sein. Am besten verstehen Sie die Kompromisse und konfigurieren jedes System entsprechend.
Quickshiftin

3
Ich nehme an, es hängt auch davon ab, wie oft Sie sie bearbeiten. Viele Leute setzen es und vergessen es, so wären 400 sicherer vor anderen und Ihren eigenen Handlungen; bei Bedarf auf 600 ändern. Wenn es Teil Ihres Workflows und Ihrer SSH-Erfahrung ist, ist es möglicherweise eher hinderlich, die Berechtigungen ständig zu ändern.
Vol7ron

99

Unter Verwendung von Cygwin in Windows 8.1 muss ein Befehl ausgeführt werden:

chgrp Benutzer ~ / .ssh / id_rsa

Dann kann die hier veröffentlichte Lösung angewendet werden, 400 oder 600 ist OK.

chmod 600 ~ / .ssh / id_rsa

Ref: http://vineetgupta.com/blog/cygwin-permissions-bug-on-windows-8


8
Gebietsschemaabhängig. Ich musste "chgrp Użytkownicy ~ / .ssh / id_rsa" ausführen, da "Users" keine solche Gruppe fehlerhaft war.
Marcos

Ich musste das auch tun. Mein Cygwin-Verzeichnis befand sich am Standardspeicherort ( C:\cygwin64), daher hat es wahrscheinlich die Berechtigungen geerbt. Seltsam, dass dies bei anderen Laptops, die ich besitze, nicht passiert ist.
Zach Thacker

3
@ Marcos Ich habe eine Antwort hinzugefügt, die unabhängig vom Gebietsschema funktioniert
thehouse

4
Windows 10. Verwendete nur den zweiten Befehl. Lief wie am Schnürchen.
StalkAlex

Beachten Sie, dass für Installationen in alternativen Sprachen die Gruppe "Benutzer" alternative Bezeichner hat.
John Rumpel

43

Die vom Gebietsschema unabhängige Lösung, die unter Windows 8.1 funktioniert, lautet:

chgrp 545 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

GID 545 ist eine spezielle ID , die sich immer auf die Gruppe "Benutzer" bezieht, auch wenn das Gebietsschema ein anderes Wort für Benutzer verwendet.



24

AFAIK die Werte sind:

700 für das versteckte Verzeichnis ".ssh", in dem sich die Schlüsseldatei befindet

600 für die Schlüsseldatei "id_rsa"


19

Ich habe den Fehler in meinem Windows 10, also habe ich die Berechtigung wie folgt festgelegt und es funktioniert.

Berechtigung für id_rsa von Windows 10

Entfernen Sie im Detail andere Benutzer / Gruppen, bis nur noch 'SYSTEM' und 'Administratoren' vorhanden sind. Fügen Sie dann Ihr Windows-Login mit Leseberechtigung hinzu.

Beachten Sie, dass sich die id_rsaDatei unter dem c:\users\<username>Ordner befindet.


Ich habe das gleiche Problem unter Win-10. Aufgrund Ihrer Erklärung nicht klar, was Sie tatsächlich zugelassen und abgelehnt haben - ich habe "Benutzer" und "authentifizierte Benutzer" und nicht "bestimmte Benutzer" als Optionen + System und Administratoren. Außerdem konnte ich Cygwin nicht herausfinden - zu installieren oder zu verwenden. (?)
Sam-T

2
Für Win10 müssen Sie Ihren Schlüssel zum Benutzer nach Hause bringen - dies hat perfekt funktioniert. Ich habe versucht, den vollständigen Pfad zum Schlüssel anzugeben und mit den Berechtigungen herumzuspielen - nichts hat funktioniert.
Sam-T

@ Sam-T , wenn Sie nicht Ihren Namen in der Liste sehen können, können Sie durch Drücken hinzufügen Edit...und drücken Sie dann Add...Ihren Namen geben in das Textfeld ein, dann "Enter the object names to select"drücken Sie dann Check NamesTaste (und drücken Sie OKund andere OK) , dann sollten Sie Ihren Namen in der Liste aufgeführt werden SecurityTab
Supawat Pusavanno

Ich kann den Namen wahrscheinlich speziell hinzufügen - gemäß Ihren Anweisungen. Aber meine Hauptfrage war - welche genauen Berechtigungen für Verweigern und Zulassen für alle . In der Zwischenzeit konnte ich, wie bereits erwähnt, das Problem lösen, indem ich einfach .pemdasmyuser directory
Sam-T

15

Es gibt eine Ausnahme von der Berechtigungsanforderung "0x00" für einen Schlüssel. Wenn der Schlüssel im Besitz von root und im Besitz einer Gruppe mit Benutzern ist, kann er "0440" sein und jeder Benutzer in dieser Gruppe kann den Schlüssel verwenden.

Ich glaube, dass dies mit allen Berechtigungen im Set "0xx0" funktioniert, aber ich habe nicht jede Kombination mit jeder Version getestet. Ich habe 0660 mit 5.3p1-84 unter CentOS 6 ausprobiert, und die Gruppe ist nicht die primäre Gruppe des Benutzers, sondern eine sekundäre Gruppe, und es funktioniert einwandfrei.

Dies wird normalerweise nicht für den persönlichen Schlüssel einer Person durchgeführt, sondern für einen Schlüssel, der für die Automatisierung verwendet wird, wenn Sie nicht möchten, dass die Anwendung mit dem Schlüssel herumspielen kann.

Ähnliche Regeln gelten für die Einschränkungen des .ssh-Verzeichnisses.


15

Geben Sie 400 Berechtigungen ein und führen Sie den folgenden Befehl aus

chmod 400 /Users/username/.ssh/id_rsa

Geben Sie hier die Bildbeschreibung ein


groß! Dies löste das Problem für mich. Vielen Dank!
Emanuela Colta

11

Unter Windows 10 reichten mir chmod und chgrp von cygwin nicht aus. Ich musste mit der rechten Maustaste auf die Datei -> Eigenschaften -> Sicherheit (Registerkarte) klicken und alle Benutzer und Gruppen außer meinem aktiven Benutzer entfernen.


Dies ist nur die Lösung, die funktioniert :) Danke, Sie haben meine Zeit gespart
Atul

Ich stellte fest, dass ich danach auch ssh über die normale Windows-Eingabeaufforderung ausführen konnte. Cygwin muss nicht verwendet werden. Großartig!
Atul

8

Das hat bei mir funktioniert (auf dem Mac)

sudo chmod 600 path_to_your_key.pem 

dann :

ssh -i path_to_your_key user@server_ip

Hoffe es hilft



4

Ich habe das gleiche Problem nach der Migration von einem anderen Mac. Und es wurde blockiert, um Github über meinen Schlüssel zu verbinden.

Ich habe die Berechtigung wie unten zurückgesetzt und es funktioniert jetzt gut.

chmod 700 ~/.ssh     # (drwx------)
cd ~/.ssh            
chmod 644 *.pub      # (-rw-r--r--)
chmod 600 id_rsa     # (-rw-------)

4

Windows 10 ssh in Ubuntu EC2 Fehler "Berechtigungen sind zu offen" unter AWS

Ich hatte dieses Problem beim Versuch, mithilfe der PEM-Datei von AWS in eine Ubuntu EC2-Instanz zu ssh.

In Windows funktionierte dies, als ich diesen Schlüssel in einen unter dem Ordner .ssh erstellten Schlüssel legte

C:\Users\USERNAME\.ssh\private_key

So ändern Sie die Berechtigungseinstellungen in Windows 10:

Dateieinstellungen> Sicherheit> Erweitert

Vererbung deaktivieren

Vererbte Berechtigungen in explizite Berechtigungen umwandeln

Entfernen Sie alle Berechtigungseinträge mit Ausnahme der Administratoren

Könnte dann sicher verbinden.


4

Für mich (unter Verwendung des Ubuntu-Subsystems für Windows) änderte sich die Fehlermeldung in:

 Permissions 0555 for 'key.pem' are too open

nach der Verwendung von chmod 400. Es stellt sich heraus, dass die Verwendung von root als Standardbenutzer der Grund war.

Ändern Sie dies mit dem cmd:

 ubuntu config --default-user your_username

3

Interessante Nachricht hier. Betriebssysteme sind intelligent genug, um Remoteverbindungen zu verweigern, wenn Ihr privater Schlüssel zu offen ist. Es versteht das Risiko, wenn Berechtigungen für id_rsa weit offen sind (gelesen, kann von jedem bearbeitet werden).

{Man kann zuerst das Schloss ändern und es dann mit den Schlüsseln öffnen, die er bereits hat}

cd ~/.ssh
chmod 400 id_rsa

Während der Arbeit auf mehreren Servern (nicht in der Produktion) müssen die meisten von uns den Remote-Server mit ssh verbinden. Eine gute Idee ist es, einen Code auf Anwendungsebene (möglicherweise Java mit jsch) zu haben, um SSH-Vertrauensstellungen zwischen Servern zu erstellen. Auf diese Weise ist die Verbindung ohne Passwort. Falls Perl installiert ist, kann man auch das Net SSH-Modul verwenden.


1

Ich bin auf diesen Fehler gestoßen, als ich mit Ansible gespielt habe. Ich habe die Berechtigungen des privaten Schlüssels auf 600 geändert, um dieses Problem zu lösen. Und es hat funktioniert!

chmod 600 .vagrant/machines/default/virtualbox/private_key

1

Ich habe 600 Berechtigungsstufen für meinen privaten Schlüssel ausprobiert und es hat bei mir funktioniert. chmod 600 privateKey [dev] $ ssh -i privateKey user @ ip hat funktioniert

chmod 755 privateKey [dev] $ ssh -i privateKey user @ ip es gab folgendes Problem: Die Berechtigungen 0755 für 'privateKey' sind zu offen. Es ist erforderlich, dass Ihre privaten Schlüsseldateien NICHT für andere zugänglich sind. Dieser private Schlüssel wird ignoriert. Ladeschlüssel "privateKey": schlechte Berechtigungen


0
I have got the similar issue when i was trying to login to remote ftp server using public keys..        
To solve this issue initially i have done the following process
    Suchen Sie zuerst den Speicherort der öffentlichen Schlüssel, wenn Sie versuchen, sich mit diesem öffentlichen Schlüssel bei ftp anzumelden. Zuerst müssen wir einen Schlüssel erstellen und diese Schlüsselberechtigungen auf 600 setzen.
            Stellen Sie sicher, dass Sie sich an der richtigen Stelle befinden.
            Schritt 1:
            Gehe an den richtigen Ort
            Schritt 2:
            Nachdem Sie am richtigen Ort sind
 Befehl: 
     chmod 600 id_rsa

        This has solved my issue.

-1

Ich verwende VPC auf EC2 und habe die gleichen Fehlermeldungen erhalten. Mir ist aufgefallen, dass ich das öffentliche DNS verwendet habe. Ich habe das auf das private DNS und vola geändert !! es funktionierte...


Amazon empfiehlt chmod 400 und die Verwendung des öffentlichen DNS. Siehe Dokumentation hier: docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
ddri

-2

Für Win10 müssen Sie Ihren Schlüssel in das Home-Verzeichnis des Benutzers verschieben. Für Linux-ähnliche Betriebssysteme müssen Sie auf 700 Like oder 600 usw. chmod.


Für Win10 müssen Sie Ihren Schlüssel zum Benutzer nach Hause bringen - dies hat perfekt funktioniert. Ich habe versucht, den vollständigen Pfad zum Schlüssel anzugeben und mit den Berechtigungen herumzuspielen - hat nicht funktioniert.
Sam-T
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.