WARNUNG: UNGESCHÜTZTE PRIVATE SCHLÜSSELDATEI! beim Versuch, SSH in Amazon EC2-Instanz

190

Ich arbeite daran, Panda auf einer Amazon EC2-Instanz einzurichten. Ich habe gestern Abend mein Konto und meine Tools eingerichtet und hatte kein Problem damit, mit SSH mit meiner persönlichen Instanz zu interagieren, aber im Moment wird mir keine Erlaubnis für Pandas EC2-Instanz erteilt. Erste Schritte mit Panda

Ich erhalte die folgende Fehlermeldung:

@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @

Permissions 0644 for '~/.ec2/id_rsa-gsg-keypair' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

Ich habe mein Schlüsselpaar auf 600 geändert, um in meine persönliche Instanz zu gelangen, und habe lange experimentiert, die Berechtigungen auf 0 zu setzen und sogar neue Schlüsselzeichenfolgen zu generieren, aber nichts scheint zu funktionieren.

Jede Hilfe wäre eine große Hilfe!


Hm, es scheint, als ob das Skript ec2-run-instance meine Schlüsseldateien nicht finden kann, wenn die Berechtigungen für das Verzeichnis nicht auf 777 festgelegt sind. Ich bin neu bei SSH, daher kann ich etwas übersehen.

Übrigens
quelle
Für ec2-run-Instanzen sollte nur ein Schlüsselpaarname erforderlich sein, der auf der Seite von Amazon lebt. Sie sollten Ihren tatsächlichen privaten Schlüssel (den auf der Festplatte) nur beim SSH verwenden. Welchen Fehler erhalten Sie von ec2-run-Instanzen?
user27619
2
schrecklicher Titel für diese Frage.
MikeNereson
2
@ MikeNereson: Fühlen Sie sich frei, es zu bearbeiten, so machen wir die Dinge hier besser
Stu Thompson
Sind Sie sicher, dass Sie 0600 (oktal) und nicht 600 (dezimal) eingestellt haben?
Hyde
5
chmod 400 ~/.ssh/id_rsa Referenz: stackoverflow.com/a/9270753/2082569
atulkhatri

Antworten:

209

Ich habe mein Schlüsselpaar auf 600 geändert, um letzte Nacht in meine persönliche Instanz zu gelangen.

Und so soll es sein.

In der EC2-Dokumentation heißt es: "Wenn Sie OpenSSH (oder einen einigermaßen paranoiden SSH-Client) verwenden, müssen Sie wahrscheinlich die Berechtigungen für diese Datei so festlegen, dass sie nur von Ihnen gelesen werden kann." Die Panda-Dokumentation, die Sie mit Links zur Amazon-Dokumentation verknüpfen, vermittelt jedoch nicht, wie wichtig alles ist.

Die Idee ist, dass die Schlüsselpaardateien wie Passwörter sind und geschützt werden müssen. Der von Ihnen verwendete SSH-Client erfordert also, dass diese Dateien gesichert sind und dass nur Ihr Konto sie lesen kann.

Das Einstellen des Verzeichnisses auf 700 sollte eigentlich ausreichen, aber 777 wird nicht schaden, solange die Dateien 600 sind.

Alle Probleme, die Sie haben, sind clientseitig. Geben Sie daher bei weiteren Fragen unbedingt Informationen zum lokalen Betriebssystem an!

Stu Thompson
quelle
3
Ich bin heute gerade in eine Situation geraten, in der ich möchte, dass die Schlüsseldatei für Gruppen lesbar ist (mit ssh nicht für die persönliche Anmeldung, sondern um ein Skript auf einem Remote-Server auszuführen, dedizierter Benutzer auf dem Remote-Server für diesen Zweck, autorisierte Schlüssel nur so gesperrt Das Skript wird ausgeführt, und mehrere Personen auf dem Ursprungsserver sollten Zugriff haben, um das Skript auszuführen. Na ja, ich denke, die einfache Problemumgehung besteht darin, Kopien in ~ / .ssh / für alle Benutzer abzulegen, die Zugriff haben sollten - oder autorisierte_Tasten mit allen persönlichen Schlüsseln zu füllen.
Tobixen
@tobixen: Zwei Jahre später, aber ... die "richtige" Problemumgehung wäre, den Schlüssel in einem dedizierten Benutzer zu platzieren und den Gruppenbenutzern sudo Zugriff auf die Ausführung dieses Befehls als dedizierter Benutzer zu gewähren.
Stu Thompson
Der @ StuThompson-Link zur EC2-Dokumentation scheint tot zu sein. Kannst du bitte aktualisieren?
Aniket Thakur
Ich kann nicht sehen, was ich tun soll, damit es in Ihrer Antwort funktioniert. Bitte geben Sie eine Antwort :)
Pratik
Die @ Ratik-Einstellung 600 für beide Schlüsseldateien und 777 für das Verzeichnis sollte funktionieren.
Jamo
55

Stellen Sie sicher, dass das Verzeichnis mit den privaten Schlüsseldateien auf 700 festgelegt ist

chmod 700 ~/.ec2
Mark Biek
quelle
Gibt es einen besonderen Grund, warum Sie Ausführungsberechtigungen für die Datei haben möchten?
Zoltán
1
@ Zoltán es ist ein Verzeichnis, keine Datei.
Avmohan
Ich habe dies nur für die .pem-Datei verwendet und es hat bei mir funktioniert.
CGTheLegend
30

Um dies zu beheben, 1) müssen Sie die Berechtigungen auf die Standardeinstellungen zurücksetzen:

sudo chmod 600 ~/.ssh/id_rsa sudo chmod 600 ~/.ssh/id_rsa.pub

Wenn Sie einen weiteren Fehler erhalten: Möchten Sie die Verbindung wirklich fortsetzen (Ja / Nein)? yes Fehler beim Hinzufügen des Hosts zur Liste der bekannten Hosts (/home/geek/.ssh/known_hosts).

2) Dies bedeutet, dass die Berechtigungen für diese Datei ebenfalls falsch eingestellt sind und folgendermaßen angepasst werden können:

sudo chmod 644 ~/.ssh/known_hosts

3) Schließlich müssen Sie möglicherweise auch die Verzeichnisberechtigungen anpassen:

sudo chmod 755 ~/.ssh

Dies sollte Sie wieder zum Laufen bringen.

Alena
quelle
17

Die private Schlüsseldatei sollte geschützt sein. In meinem Fall habe ich die public_key-Authentifizierung schon lange verwendet und die Berechtigung für den privaten Schlüssel auf 600 (rw- --- ---) und für 644 (rw- r-- r--) und für festgelegt Für den Ordner .ssh im Home-Ordner haben Sie die Berechtigung 700 (rwx --- ---). Um dies einzustellen, gehen Sie zum Home-Ordner des Benutzers und führen Sie den folgenden Befehl aus


Legen Sie die 700- Berechtigung für den Ordner .ssh fest

chmod 700 .ssh


Legen Sie die 600- Berechtigung für die private Schlüsseldatei fest

chmod 600 .ssh/id_rsa


Legen Sie die 644- Berechtigung für die Datei mit öffentlichem Schlüssel fest

chmod 644 .ssh/id_rsa.pub
Sandeep Sasikumar
quelle
2

Bewahren Sie Ihren privaten Schlüssel, den öffentlichen Schlüssel und die bekannten Hosts im selben Verzeichnis auf und versuchen Sie, sich wie folgt anzumelden:

ssh -I(small i) "hi.pem" ec2-user@ec2-**-***-**-***.us-west-2.compute.amazonaws.com
  • Gleiches Verzeichnis im Sinne, cd /Users/prince/Desktop . Geben lsSie nun den Befehl ein und Sie sollten sehen **.pem **.ppk known_hosts

Hinweis: Sie müssen versuchen, sich aus demselben Verzeichnis anzumelden, da sonst die Fehlermeldung "Berechtigung verweigert" angezeigt wird, da die PEM-Datei aus Ihrem aktuellen Verzeichnis nicht gefunden werden kann.


Wenn Sie SSH aus einem beliebigen Verzeichnis ausführen möchten, können Sie Folgendes hinzufügen ~/.ssh/config Datei ...

Host your.server
HostName ec2-user@ec2-**-***-**-***.us-west-2.compute.amazonaws.com
User ec2-user
IdentityFile ~/.ec2/id_rsa-gsg-keypair
IdentitiesOnly yes

Jetzt können Sie SSH auf Ihren Server übertragen, unabhängig davon, wo sich das Verzeichnis befindet, indem Sie einfach ssh your.server(oder einen beliebigen Namen, den Sie nach "Host" eingeben) eingeben .

Prinz Charu
quelle
1

Versuchen Sie unter Windows, git bash zu verwenden, und verwenden Sie dort Ihre Linux-Befehle. Einfacher Ansatz

chmod 400 *****.pem

ssh -i "******.pem" [email protected]
Dheeraj
quelle
Wenn Sie WSL verwenden, stellen Sie sicher, dass Sie die PEM-Datei in einen Linux-Ordner kopieren, da chmod in den Verzeichnissen / mnt nicht wirksam ist.
Paulo Merson
1

Ändern Sie die Dateiberechtigung mit dem Befehl chmod

sudo chmod 700 keyfile.pem
Greenkraftz
quelle
0

Ich denke an etwas anderes. Wenn Sie versuchen, sich mit einem anderen Benutzernamen anzumelden, der nicht vorhanden ist, erhalten Sie diese Nachricht.

Ich gehe davon aus, dass Sie möglicherweise versuchen, mit ec2-user ssh zu verwenden, aber ich erinnere mich, dass in letzter Zeit die meisten Centos-AMIs beispielsweise centos user anstelle von ec2-user verwenden

Wenn Sie dies tun, teilen ssh -i file.pem centos@public_IPSie mir bitte mit, dass Sie mit dem richtigen Benutzernamen zu ssh wechseln. Andernfalls kann dies ein starker Grund dafür sein, dass Sie eine solche Fehlermeldung auch mit den richtigen Berechtigungen für Ihre ~ / .ssh / id_rsa oder file.pem sehen

Abdel Hegazi
quelle
0

Nur eine Anmerkung für alle, die darauf stoßen:

Wenn Sie versuchen, SSH mit einem Schlüssel durchzuführen, der für Sie freigegeben wurde, zum Beispiel:

ssh -i /path/to/keyfile.pem user@some-host

Wo keyfile.pemwird der private / öffentliche Schlüssel für Sie freigegeben und Sie verwenden ihn zum Herstellen einer Verbindung ? Stellen Sie sicher, dass Sie ihn in ~/.ssh/und speichern chmod 777.

Der Versuch, die Datei zu verwenden, als sie an anderer Stelle auf meinem Computer gespeichert wurde, gab den OP-Fehler aus. Ich bin mir nicht sicher, ob es in direktem Zusammenhang steht.

Kubie
quelle
0

Die Lösung besteht darin, sie nur für den Eigentümer der Datei lesbar zu machen, dh die letzten beiden Ziffern der Darstellung im Oktalmodus sollten Null sein (z 0400. B. Modus ).

OpenSSH checkt dies authfile.cin einer Funktion mit dem Namen ein sshkey_perm_ok:

/*
 * if a key owned by the user is accessed, then we check the
 * permissions of the file. if the key owned by a different user,
 * then we don't care.
 */
if ((st.st_uid == getuid()) && (st.st_mode & 077) != 0) {
    error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
    error("@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @");
    error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
    error("Permissions 0%3.3o for '%s' are too open.",
        (u_int)st.st_mode & 0777, filename);
    error("It is required that your private key files are NOT accessible by others.");
    error("This private key will be ignored.");
    return SSH_ERR_KEY_BAD_PERMISSIONS;
}

Siehe die erste Zeile nach dem Kommentar: Es wird ein "bitweises und" gegen den Modus der Datei ausgeführt, wobei alle Bits in den letzten beiden Oktalziffern ausgewählt werden (da 07ist Oktal für 0b111, wobei jedes Bit für r / w / x steht). .

Luc
quelle