Ich möchte meine Amazon ec2-Instanz verwenden, habe jedoch den folgenden Fehler festgestellt:
Permission denied (publickey).
Ich habe mein Schlüsselpaar erstellt und die PEM- Datei heruntergeladen .
Gegeben:
chmod 600 pem file.
Dann dieser Befehl
ssh -i /home/kashif/serverkey.pem [email protected]
Aber haben Sie diesen Fehler:
Permission denied (publickey)
Auch wie kann ich eine Verbindung mit FileZilla Upload / Download - Dateien?
amazon-web-services
ssh
amazon-ec2
Kashiftufail
quelle
quelle
admin
. Zumindest für die Versionen 6.5 und 7.0.ec2-user
, stellen Sie sicher, dass Sie nicht verwendenec2_user
:)$HOME/.ssh/authorized_keys
Datei aufgeführt hat.Antworten:
Diese Fehlermeldung bedeutet, dass Sie sich nicht authentifizieren konnten.
Dies sind häufige Gründe, die dazu führen können:
ubuntu
ist der Benutzername für die Distribution Ubuntu basiert AWS, aber auf einigen anderen ist esec2-user
(oderadmin
auf einigen Debians nach Bogdan Kulbida Antwort) (auch sein kannroot
,fedora
siehe unten)Beachten Sie, dass dies
1.
auch passiert, wenn Sie die/home/<username>/.ssh/authorized_keys
Datei auf Ihrer EC2-Instanz durcheinander gebracht haben .In
2.
der AMI-Image-Beschreibung fehlen häufig Informationen darüber, welchen Benutzernamen Sie verwenden sollten. Einige finden Sie jedoch in der AWS EC2-Dokumentation, Aufzählungspunkt4.
: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.htmlBeachten Sie schließlich , dass es viele andere Gründe gibt, warum die Authentifizierung fehlschlagen würde. SSH ist normalerweise ziemlich explizit darüber, was schief gelaufen ist, wenn Sie die
-v
Option zu Ihrem SSH-Befehl hinzufügen und die Ausgabe lesen möchten, wie in vielen anderen Antworten auf diese Frage erläutert.quelle
In diesem Fall entsteht das Problem durch ein verlorenes Schlüsselpaar. Darüber:
Sie können die folgenden Schritte ausführen:
Denken Sie im Allgemeinen daran, dass Sie Ihrer EC2-Instanz erlauben müssen, eingehenden SSH-Verkehr zu akzeptieren.
Dazu müssen Sie eine bestimmte Regel für die Sicherheitsgruppe Ihrer EC2-Instanz erstellen. Sie können diese Schritte ausführen.
Hoffe das kann jemandem helfen wie mir geholfen hat.
quelle
So habe ich das Problem gelöst
quelle
Ich löste das Problem nur darum
sudo
vorDie richtige Lösung besteht jedoch darin, zuerst den Eigentümer zu ändern und dann als normaler Benutzer eine Verbindung herzustellen, wie Janus Troelsen weiter unten sagte. In meinem Fall wäre es:
quelle
sudo chown wellington:wellington key.pem
.Versuchen Sie es mit
ODER
quelle
Eine weitere mögliche Ursache für diesen Fehler:
Wenn das Ausgangsverzeichnis des Benutzers für Gruppen beschreibbar ist , kann sich der Benutzer nicht anmelden.
(Wiedergabe auf Ubuntu-Instanz.)
quelle
für die ubuntu 12.04 lts micro instance musste ich den benutzernamen als option setzen
quelle
Sie müssen die folgenden Schritte ausführen:
cd <path to your .pem file>
chmod 400 <filename>.pem
ssh -i <filename>.pem ubuntu@<ipaddress.com>
Wenn der
ubuntu
Benutzer nicht arbeitet, versuchen Sie es mitec2-user
.quelle
Ich kämpfte mit der gleichen Erlaubnis verweigert Fehler anscheinend wegen
In meiner Situation war die Ursache die ssh-Konfigurationsdatei des aktuellen Benutzers (~ / .ssh / config).
Verwenden Sie Folgendes:
Die anfängliche Ausgabe zeigte:
... viele Debug-Zeilen hier geschnitten ...
In der dritten Zeile oben wurde das tatsächliche Problem identifiziert. Ich habe jedoch vier Zeilen von unten (oben) nach der Debug-Meldung gesucht und wurde irregeführt. Es gibt kein Problem mit dem Schlüssel, aber ich habe ihn getestet und andere Konfigurationen verglichen.
Meine Benutzer-SSH-Konfigurationsdatei hat den Host über eine unbeabsichtigte globale Einstellung zurückgesetzt, wie unten gezeigt. Die erste Host-Zeile sollte kein Kommentar sein.
Ich hoffe, jemand anderes findet das hilfreich.
quelle
Ich habe vergessen, den Benutzernamen (Ubuntu) hinzuzufügen, wenn ich meine Ubuntu-Instanz verbinde. Also habe ich das versucht:
und der richtige Weg war
quelle
Das ist mir schon mehrmals passiert. Ich habe Amazon Linux AMI 2013.09.2 und Ubuntu Server 12.04.3 LTS verwendet, die beide auf der kostenlosen Ebene sind.
Jedes Mal, wenn ich eine Instanz gestartet habe, wurde mir die Berechtigung verweigert, angezeigt zu werden. Ich habe dies nicht überprüft, aber meine Theorie ist, dass der Server nicht vollständig eingerichtet ist, bevor ich versuche, ihn zu ssh. Nach einigen Versuchen mit verweigerter Erlaubnis warte ich einige Minuten und kann dann eine Verbindung herstellen. Wenn Sie dieses Problem haben, empfehle ich, fünf Minuten zu warten und es erneut zu versuchen.
quelle
Hier sind mögliche frustrierende Szenarien, die diesen Fehler verursachen:
Wenn Sie eine neue Instanz von einem AMI zu Mittag essen, das Sie von einer anderen Instanz erstellt haben (z. B. Instanz xyz), akzeptiert die neue Instanz nur denselben Schlüssel, den Instanz A verwendet hat. Dies ist völlig verständlich, wird jedoch verwirrend, da Sie während des schrittweisen Erstellens der neuen Instanz aufgefordert werden, einen Schlüssel auszuwählen oder zu erstellen (im allerletzten Schritt), der nicht funktioniert.
Unabhängig davon, welchen Schlüssel Sie erstellen oder auswählen, wird nur der Schlüssel, den Sie beispielsweise für XYZ verwendet haben, von der neuen Instanz akzeptiert.
quelle
Ich hatte auch eine Weile damit zu kämpfen, bis ich Folgendes fand:
Wenn Sie das aus dem Projektverzeichnis verwenden, sind Sie in Bingo-Bango ohne Muss
quelle
In meinem Fall habe ich Folgendes getan:
Ich habe anfangs ein
root@
Teil verwendet und diese Aufforderung erhalten:quelle
Ich bin in Windows mit WinSCP . Es funktioniert sowohl im Datei-Explorer als auch in der PuTTY SSH-Shell hervorragend, um auf mein Amazon EC2-VPC Linux zuzugreifen . Es gibt nichts mit dem zu tun ,
chmod pem file
wie es verwendetmyfile.ppk
umgewandelt durch PuTTYgen aus der pem - Datei .quelle
Das gleiche passierte mir, aber alles, was passierte, war, dass der private Schlüssel aus dem Schlüsselbund auf meinem lokalen Computer verloren ging.
Der Schlüssel wurde erneut hinzugefügt, und der Befehl ssh zum Verbinden kehrte zur Arbeit zurück.
quelle
Dieses Problem kann gelöst werden, indem Sie sich mit dem folgenden Befehl in die Ubuntu-Box einloggen:
quelle
Ich hatte zweimal die richtigen Tasten und die richtige ssh-Befehlszeile (ich weiß, weil ich eine funktionierende Ubuntu 14.04-Instanz dupliziere), konnte aber einfach nicht in eine neue Instanz ssh, selbst nachdem ich 5 Minuten gewartet hatte, wie von Wade Anderson oben vorgeschlagen.
Ich musste die Maschine zerstören und neu erstellen. Dies ist bei zwei verschiedenen Gelegenheiten geschehen. Da ich anfangs nicht einsteigen kann, kann ich nicht sehen, was los ist.
Wenn Sie dieses Problem haben, versuchen Sie es.
quelle
Sie müssen diese wenigen Dinge überprüfen:
Ich hatte das gleiche Problem und es wurde gelöst, nachdem ich den Benutzernamen in Ubuntu geändert hatte. In der AWS-Dokumentation wurde der Benutzer ec2-user erwähnt, aber irgendwie funktioniert das bei mir nicht.
quelle
Mein privater Schlüssel wurde auf Berechtigung gesetzt
400
und führte dazu, dass die Berechtigung verweigert wurde. Das Setzen auf '644' hat mir geholfen.key_load_private_type: Berechtigung verweigert ist der spezifische Fehler, den ich erhalten habe
Lösung:
Sudo chmod 644 <key.pem>
Hinweis: Auf 644 gesetzt ist ein Muss, es funktionierte nicht mit 400
quelle
Wenn du es versuchst
ssh -i <.pem path> root@ec2-public-dns
Sie erhalten eine Nachricht, in der Sie aufgefordert werden, die zu verwenden
ec2-user
.Please login as the user "ec2-user" rather than the user "root".
Also benutze
ssh -i <.pem path> ec2-user@ec2-public-dns
quelle
Ich hatte das gleiche Problem und es ist sehr seltsam. Wenn Sie glauben, dass Sie alles gut machen, dann folgen Sie diesen Anweisungen: Manchmal gibt es Verwirrung über den Benutzer für die EC2-Instanz !! Manchmal bekommst du ec2-Benutzer, Ubuntu, Centos usw. Also überprüfe deinen Benutzernamen für den Machie !!
Mit Root-Benutzer anmelden
ssh -i yourkey.pem (400 permission) root@<ip>
Es wird ein Fehler ausgegeben und Sie erhalten den verfügbaren Benutzernamen . Melden Sie sich dann mit diesem Benutzer an.quelle
Es ist eine grundlegende Sache, aber bestätigen Sie immer, welcher Benutzer Sie versuchen, sich anzumelden. Ich bin mein Fall war nur eine Ablenkung . Ich habe versucht, einen Root- Benutzer zu verwenden:
War aber ein anderer User :
quelle
Ich hatte den gleichen Fehler, aber eine andere Situation. Für mich passierte es aus heiterem Himmel, nachdem ich viel Zeit erfolgreich mit meinem Remote-Computer verbracht hatte. Nach langem Suchen waren die Dateiberechtigungen die Lösung für mein Problem. es ist natürlich seltsam, weil ich keine Berechtigungen in meinem Computer oder der Remote-Berechtigung geändert habe, die zu den Dateien / Verzeichnissen des SSH gehört. Also aus dem guten Archlinux-Wiki hier ist es:
Führen Sie für den lokalen Computer folgende Schritte aus:
Für die Remote-Maschine machen Sie das:
Danach fing mein SSH wieder an zu arbeiten, ohne dass die Erlaubnis verweigert wurde (publickey).
quelle
Ein weiteres mögliches Problem: Falsche Login-ID
Überprüfen Sie die 'Gebrauchsanweisung'
Alle guten Vorschläge oben, aber ich bin darauf gestoßen, dass ich eine vorgefertigte Instanz ausgewählt habe. Lesen Sie nach dem Start der Instanz die Gebrauchsanweisung. Ich habe die Anmelde-ID des privaten Schlüssels falsch verwendet, als ich in den Anweisungen 'bitnami' verwenden sollte (z. B. bitnami @ domain -i key.pem).
quelle
Ich hatte einen ähnlichen Fehler
Mein Problem war, dass die Instanz aufgrund eines Fehlers im Startskript von nicht ordnungsgemäß gestartet wurde
Step 3: Configure instance detail
unterAdvanced details:
Was ich dachte, ich habe eingegeben:
#include https://xxxx/bootstrap.sh
Was tatsächlich eingegeben wurde, unterbricht das Instanz-Setup
#include
https://xxxx/bootstrap.sh
Der öffentliche Schlüssel auf der Instanzseite wurde also nicht erstellt
quelle
Es unterscheidet zwischen Groß- und Kleinschreibung.
Falsch: SSH EC2-Benutzer @ XXX.XX.XX.XX -i MyEC2KeyPair.pem
Richtig: SSH ec2-user @ XXX.XX.XX.XX -i MyEC2KeyPair.pem
quelle
Ich konnte von einer Maschine aus SSH, aber nicht von einer anderen. Es stellte sich heraus, dass ich den falschen privaten Schlüssel verwendet habe.
Ich habe dies herausgefunden, indem ich den öffentlichen Schlüssel von meinem privaten Schlüssel wie folgt abgerufen habe:
ssh-keygen -y -f ./myprivatekey.pem
Was herauskam, stimmte nicht mit dem überein, was in
~/.ssh/authorized_keys
der EC2-Instanz enthalten war.quelle
Alle oben genannten Antworten sind korrekt und sollten in den meisten Fällen funktionieren. Für den Fall, dass sie nicht so sind wie in meinem Fall, habe ich einfach meine
~/.ssh/known_hosts
Datei auf dem Computer entfernt, von dem ich ssh wollte, und das hat das Problem für mich gelöst. Ich konnte mich danach verbinden.quelle
known_hosts
ein Problem lösen kann, wenn eine Verbindung zu einem Server hergestellt wird, dessen Hostschlüssel geändert wurde (obwohl dies ohnehin ein schlechter Ansatz ist), bin ich mir ziemlich sicher, dass der Fehler "Berechtigung verweigert (öffentlicher Schlüssel)" nicht behoben werden kann.