Dies ist wahrscheinlich eine dumm einfache Frage an einige :)
Ich habe eine neue Linux-Instanz auf Amazon EC2 erstellt und als Teil davon die PEM-Datei heruntergeladen, damit ich SSH verwenden kann.
Als ich versuchte zu ssh mit:
ssh -i myfile.pem <public dns>
Ich habe:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazonec2.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: amazonec2.pem
Permission denied (publickey).
Nach diesem Beitrag habe ich versucht, +600 die PEM-Datei zu chmod, aber jetzt, wenn ich ssh, bekomme ich nur:
Permission denied (publickey).
Welchen Schuljungenfehler mache ich hier? Die .pem-Datei befindet sich in meinem Home-Ordner (in osx). Die Berechtigungen sehen folgendermaßen aus:
-rw-------@ 1 mattroberts staff 1696 19 Nov 11:20 amazonec2.pem
amazon-web-services
authentication
ssh
amazon-ec2
permissions
Matt Roberts
quelle
quelle
chmod 400 myfile.pem
wie es verwendetmyfile.ppk
von PuTTYgen aus der pem - Datei generiert.Antworten:
Das Problem ist, dass die Datei einen falschen Mod enthält.
Einfach durch Ausführen gelöst -
chmod 400 mykey.pem
Entnommen aus den Anweisungen von Amazon -
400 schützt es, indem es nur für den Eigentümer lesbar gemacht wird.
quelle
ssh -i YOUR_PEM_FILE.pem ec2-user@YOUR_IP
das Problem behoben. Vielleicht sollte dies die akzeptierte Antwort sein ...Sie verwenden wahrscheinlich den falschen Benutzernamen, um sich anzumelden:
ubuntu
ec2-user
root
oderadmin
Um sich anzumelden, müssen Sie Ihren ssh-Befehl anpassen:
HTH
quelle
Permission denied (publickey).
und nichts anderes ...chmod 500 <path_to_pem_file>
sollte es tun.Ich weiß, das ist sehr spät im Spiel ... aber das funktioniert immer für mich:
Schritt 1
Schritt 2, einfach ssh in :)
z.B
hoffe das hilft jemandem.
quelle
ssh-agent -s
berichtet SSH_AGENT_PID = 3409; ssh-add gibt den gleichen Fehler wie oben ......... Jede Hilfe hier plzOk Mann, das einzige was für mich funktioniert hat war:
Ändern Sie die Berechtigungen des Schlüssels
Stellen Sie sicher, dass Sie sich mit ec2-user und der richtigen ec2-99 ... -Adresse anmelden. Die ec2-99-Adresse befindet sich unten in der aws-Konsole, wenn Sie angemeldet sind und Ihre Instanz aufgelistet ist
quelle
Schauen Sie sich diesen Artikel an . Sie verwenden nicht das öffentliche DNS, sondern das Formular
wo der Name auf Ihrem AMI-Panel sichtbar ist
quelle
Ändern Sie die Berechtigung für die Schlüsseldatei mit:
Informationen zum Herstellen einer Verbindung zur Instanz finden Sie in der AWS-Dokumentation:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#EC2_ConnectToInstance_Linux
quelle
In Windows können Sie zu den Eigenschaften der PEM-Datei gehen, zur Registerkarte Sicherheit und dann zur Schaltfläche Weiter.
Vererbung und alle Berechtigungen entfernen. dann gib dir die volle Kontrolle. Immerhin gibt Ihnen SSL nicht wieder den gleichen Fehler.
quelle
Ich weiß, dass diese Frage bereits beantwortet wurde, aber für diejenigen, die sie alle ausprobiert haben und Sie immer noch die nervige "Erlaubnis verweigert (publickey)" erhalten. Versuchen Sie, Ihren Befehl mit SUDO auszuführen. Natürlich ist dies eine vorübergehende Lösung, und Sie sollten die Berechtigungen korrekt festlegen, aber zumindest können Sie so feststellen, dass Ihr aktueller Benutzer nicht mit den erforderlichen Berechtigungen ausgeführt wird (wie Sie angenommen haben).
sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com
Sobald Sie dies tun, erhalten Sie eine Nachricht wie folgt:
Please login as the user "ec2-user" rather than the user "root"
Welches ist auch spärlich dokumentiert. In diesem Fall machen Sie einfach Folgendes:
sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user
Und du wirst das Herrliche bekommen:
quelle
Im Mac-Terminal hat es mir nicht geholfen, "chmod 400 xyz.pem" zu machen. Es wurde immer wieder gesagt, dass die Erlaubnis verweigert wurde. Für Ubuntu-Benutzer würde ich vorschlagen
ssh-add xyz.pem
ssh -i xyz.pem [email protected]
(Beachten Sie, dass der Benutzer Ubuntu ist)quelle
Best Practices für SSH-Schlüssel und Dateiberechtigungen:
öffentlicher Schlüssel / .pub-Datei - 0600 (nur vom Eigentümer lesen und schreiben)
chmod XXXX file/directory
quelle
ssh -i /.pem user @ host-machine-IP
Ich denke, das liegt daran, dass Sie entweder falsche Anmeldeinformationen eingegeben haben oder einen öffentlichen Schlüssel anstelle eines privaten Schlüssels verwenden oder dass Ihre Portberechtigungen für ALLE für ssh offen sind. Das ist schlecht für Amazon.
quelle
Alternative Anmeldung mit PuTTY. Es ist gut, braucht aber ein paar Schritte.
Ich benutze PuTTY 0.66 in Windows.
quelle
Zusätzlich zu den anderen Antworten habe ich Folgendes getan, damit dies funktioniert:
cp key.pem ~/.ssh/key.pem
chmod 400 ~/.ssh/key.pem
eval `ssh-agent -s` ssh-add
ssh-add ~/.ssh/key.pem
Jetzt sollten Sie in der Lage sein, EC2 zu ssh (:
quelle
Führen Sie eine chmod 400 yourkeyfile.pem aus. Wenn Ihre Instanz Amazon Linux ist, verwenden Sie ssh -i yourkeyfile.pem ec2-user @ ip für ubuntu ssh -i yourkeyfile.pem ubuntu @ ip für centos ssh -i yourkeyfile.pem centos @ ip
quelle
Dieser Fehler kann drei Gründe haben.
quelle
Das Problem für mich war, dass sich meine PEM-Datei in einer meiner NTFS-Partitionen befand. Ich habe es auf meine Linux-Partition (ext4) verschoben.
Erforderliche Berechtigungen durch Ausführen von:
chmod 400 my_file.pem
Und es hat funktioniert.
quelle
Wenn ich mir Ihre Beitragsbeschreibung ansehe, habe ich das Gefühl, dass Sie zwei Fehler gemacht haben:
Legen Sie die richtigen Berechtigungen für den privaten Schlüssel fest . Der folgende Befehl soll Ihnen helfen, die richtige Dateiberechtigung festzulegen.
chmod 0600 mykey.pem
Falscher ec2-Benutzer, den Sie anmelden möchten .
Wenn Sie sich Ihr Debug-Protokoll ansehen, haben Sie wahrscheinlich eine Amazon Linux-Instanz erstellt. Der Standardbenutzer für diesen Instanztyp ist
ec2-user
. Wenn die Instanz Ubuntu gewesen wäre, wäre Ihr Standardbenutzer gewesenubuntu
.ssh -i privatekey.pem default_ssh_user@server_ip
Quelle: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
quelle
Checkliste:
Verwenden Sie die richtige PEM-Datei mit privatem Schlüssel?
Sind die Berechtigungen richtig eingestellt? (Meine AMIs der Marke Amazon funktionieren mit 644, aber Red Hat muss mindestens 600 oder 400 sein. Ich weiß nichts über Ubuntu.)
Verwenden Sie den richtigen Benutzernamen in Ihrer SSH-Zeile? Amazon-branded = "ec2-user", Red Hat = "root", Ubuntu = "ubuntu". Der Benutzer kann als "ssh -i pem Benutzername @ Hostname" ODER "ssh -l Benutzername -i pem Hostname" angegeben werden.
quelle
Ändern Sie einfach die Berechtigung der PEM-Datei in 0600, wobei nur der zulässige Benutzer berücksichtigt wird, und es funktioniert wie ein Zauber.
Und dann versuchen Sie zu ssh, es wird perfekt funktionieren.
quelle
Standardmäßig erlauben Berechtigungen den PEM-Schlüssel nicht. Sie müssen nur die Berechtigung ändern:
chmod 400 xyz.pem
und wenn Ubuntu-Instanz, dann verbinden mit:
ssh -i xyz.pem [email protected]
quelle
Die Schlüsseldatei sollte nicht öffentlich sichtbar sein. Verwenden Sie daher die Berechtigung 400
Wenn der obige Befehl den Berechtigungsfehler anzeigt, verwenden Sie
Verwenden Sie jetzt ssh in der ec2-Maschine. Wenn Sie immer noch mit dem Problem konfrontiert sind , verwenden Sie ec2-user
ssh -i keyfile.pem [email protected]
quelle
.400 schützt es, indem es schreibgeschützt und nur für den Eigentümer ist.
Die Antwort finden Sie im ASW-Handbuch.
quelle
Im Folgenden sind die einfachen Schritte aufgeführt, mit denen Linux-Benutzer mithilfe der PEM-Datei eine Verbindung zum Server herstellen können:
Schritt 1: Gehen Sie zum Speicherort der PEM-Datei und kopieren Sie sie in den Speicherort .ssh.
Schritt 2: Ändern Sie die Berechtigung
Schritt 3: Führen Sie den folgenden Befehl aus
Da dieser Befehl zu lang ist, sollten Sie den Alias mit folgenden Befehlen erstellen:
Schreiben Sie den gleichen Befehl zuletzt wie folgt.
Starten Sie nun Ihr System neu und stellen Sie
sshConnect
eine Verbindung zu Ihrem Server her.quelle
Es ist nur ein Berechtigungsproblem mit Ihrem aws pem-Schlüssel.
Ändern Sie einfach die Berechtigung des PEM-Schlüssels mit dem folgenden Befehl in 400.
Wenn Sie nicht berechtigt sind, die Berechtigung einer Datei zu ändern, können Sie sudo wie den folgenden Befehl verwenden.
Ich hoffe das sollte gut funktionieren.
quelle
Ich habe zwei Gründe für dieses Problem gesehen
1) Der Zugriffsschlüssel hat nicht die richtige Berechtigung. PEM-Schlüssel mit Standardberechtigung dürfen keine sichere Verbindung herstellen. Sie müssen nur die Berechtigung ändern:
chmod 400 xyz.pem
2) Überprüfen Sie auch, ob Sie sich mit den richtigen Benutzeranmeldeinformationen angemeldet haben. Verwenden Sie andernfalls sudo, während Sie eine Verbindung herstellen
sudo ssh -i {Schlüsseldatei} ec2-user @ {IP-Adresse des Remote-Hosts}
quelle
Ihr Schlüssel darf nicht öffentlich sichtbar sein, damit SSH funktioniert. Verwenden Sie diesen Befehl bei Bedarf:
Beispiel:
quelle
Bitte ignorieren Sie diese Antwort, wenn sie für Sie irrelevant ist, aber meiner Erfahrung nach habe ich Leute gesehen, mit denen ein Problem
Permission denied (publickey)
aufgetreten ist, weil sie einfach ihren öffentlichen Schlüssel (auf einem Zielcomputer) ohne den ersten Buchstaben eingefügt haben !Dies geschieht, wenn Sie den Schlüssel mit vim bearbeiten (einfügen). Da vim standardmäßig im Befehlsmodus geöffnet wird (nicht in einem Einfügemodus ), führt das Einfügen der Taste ohne Umschalten in einen Einfügemodus (dh
i
) dazu, dass der erstes
Buchstabe übersprungen wird , z. B. anstelle vonSie am Ende einfügen
Bevor Sie andere Lösungen ausprobieren, prüfen Sie , ob Sie Ihren Schlüssel richtig eingefügt haben ! dh
Führen Sie die nächsten Schritte nur aus, wenn Sie sicher sind. Wenn Sie versuchen, in einem ausführlichen Modus (z. B. Flag
-v
) zu ssh, weisen Sie möglicherweise auf das eigentliche Problem hin:Nebenbei bemerkt, wie bereits von anderen erwähnt, sollte das Problem in den meisten Fällen durch Starten eines leeren SSH-Agenten (Programm, das Ihre Schlüssel im Speicher behält) und Hinzufügen Ihres Schlüssels behoben werden:
quelle
Was dies für mich behoben hat, war das Verschieben der PEM-Datei in das Apps-Verzeichnis. Also sag fooapp ist der Name meiner App. Ich habe es direkt dort platziert.
quelle
Manchmal liegt möglicherweise ein Fehler im Ordner vor. Keine Ahnung warum...
Sie können den Ordner ändern und es erneut versuchen. Sie können beispielsweise in den üblichen Ordnern (Desktop, Downloads usw.) experimentieren.
Ich habe diese Methode ausprobiert und gearbeitet
quelle
Dieser Fehler ist nur auf Erlaubnis zurückzuführen.
Geben Sie einfach die Erlaubnis 400
#chmod 400 pemfilepath
quelle