Dies ist wahrscheinlich eine dumm einfache Frage an einige :)
Ich habe unter Amazon EC2 eine neue Linux-Instanz erstellt und als Teil davon die PEM-Datei heruntergeladen, damit ich SSH ausführen kann.
Als ich versuchte mit ssh:
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).
Im Anschluss an diesen Beitrag Ich habe versucht, die PEM-Datei mit +600 zu chmodieren, aber jetzt, wenn ich ssh habe, bekomme ich einfach:
Permission denied (publickey).
Welchen Schulfehler mache ich hier? Die .pem-Datei befindet sich in meinem Home-Ordner (in osx). Die Berechtigungen sehen folgendermaßen aus:
[email protected] 1 mattroberts staff 1696 19 Nov 11:20 amazonec2.pem
Das Problem ist ein falscher Mod in der Datei.
Leicht gelöst durch Ausführen von -
chmod 400 mykey.pem
Entnommen aus den Anweisungen von Amazon -
Ihre Schlüsseldatei darf nicht öffentlich sichtbar sein, damit SSH funktioniert. Verwenden Sie bei Bedarf diesen Befehl: chmod 400 mykey.pem
Sie verwenden wahrscheinlich den falschen Benutzernamen, um sich anzumelden:
ubuntu
ec2-user
root
oder admin
Um sich anzumelden, müssen Sie Ihren ssh-Befehl anpassen:
ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-Host
HTH
Ich weiß, das ist sehr spät im Spiel ... aber das immer funktioniert bei mir:
ssh-add ~/.ssh/KEY_PAIR_NAME.pem
ssh [email protected]<instance public dns/ip>
z.B.
ssh [email protected]
hoffe das hilft jemandem.
Ok Mann, das einzige was bei mir funktioniert hat war:
Ändern Sie die Berechtigungen des Schlüssels
chmod 400 mykey.pem
Stellen Sie sicher, dass Sie sich mit ec2-user und der richtigen ec2-99 ... -Adresse anmelden. Die ec2-99-Adresse befindet sich am unteren Rand der aws-Konsole, wenn Sie angemeldet sind und Ihre Instanz aufgelistet sehen
ssh -i mykey.pem [email protected]
Schauen Sie sich diesen Artikel an. Sie verwenden nicht das öffentliche DNS, sondern das Formular
ssh -i your.pem [email protected]
wo der Name auf Ihrem AMI-Panel sichtbar ist
Ändern Sie die Berechtigung für die Schlüsseldatei mit:
chmod 400 key-file-name.pem
Informationen zum Herstellen einer Verbindung mit der Instanz finden Sie in der AWS-Dokumentation:
http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#EC2_ConnectToInstance_Linux
In Windows können Sie zu den Eigenschaften der PEM-Datei gehen, zur Registerkarte Sicherheit und dann zur Schaltfläche Weiter.
entfernen Sie die Vererbung und alle Berechtigungen. dann gönnen Sie sich die volle Kontrolle. Immerhin gibt Ihnen SSL nicht wieder den gleichen Fehler.
Im Mac-Terminal hat es mir nicht geholfen, "chmod 400 xyz.pem" zu tun. 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)Ich weiß, dass diese Frage bereits beantwortet wurde, aber für diejenigen, die sie alle ausprobiert haben und Sie immer noch die ärgerliche "Erlaubnis verweigert (publickey)" bekommen. Versuchen Sie, Ihren Befehl mit Sudo auszuführen. Dies ist natürlich eine vorübergehende Lösung, und Sie sollten die Berechtigungen korrekt festlegen. Zumindest können Sie so feststellen, dass Ihr aktueller Benutzer nicht mit den von Ihnen benötigten 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"
Was auch spärlich dokumentiert ist. 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 Sie werden das Herrliche bekommen:
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
Best Practices für SSH-Schlüssel und Dateiberechtigungen:
öffentliche Schlüssel-/PUB-Datei - 0600 (Lesen und Schreiben nur vom Eigentümer)
chmod XXXX file/directory
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 ssh (:
ssh -i /.pem user @ Host-machine-IP
Ich denke, es liegt daran, dass Sie falsche Anmeldeinformationen eingegeben haben oder dass Sie einen öffentlichen Schlüssel anstelle eines privaten Schlüssels verwenden oder dass Ihre Port-Berechtigungen für ALLE für ssh offen sind. Das ist schlecht für Amazon.
Alternative Anmeldung mit PuTTY. Es ist gut, braucht aber ein paar Schritte.
Ich benutze PuTTY 0.66 in Windows.
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.
Erhielt erforderliche Berechtigungen durch Ausführen von:
chmod 400 my_file.pem
Und es hat funktioniert.
Es kann drei Gründe für diesen Fehler geben.
Mache ein chmod 400 yourkeyfile.pem Wenn deine Instanz Amazon Linux ist, dann benutze 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
Die Schlüsseldatei sollte nicht öffentlich sichtbar sein. Verwenden Sie daher die Berechtigung 400
chmod 400 keyfile.pem
Wenn der obige Befehl einen Berechtigungsfehler anzeigt, verwenden Sie
Sudo chmod 400 keyfile.pem
Jetzt ssh in die ec2-Maschine, wenn Sie immer noch vor dem Problem stehen, verwenden Sie ec2-user
ssh -i keyfile.pem [email protected]
Ändern Sie einfach die Erlaubnis der PEM-Datei auf 0600 und erlauben Sie nur dem erlaubten Benutzer, und es wird wie Charme funktionieren.
Sudo chmod 0600 myfile.pem
Und dann versuche ssh es wird perfekt funktionieren.
ssh -i myfile.pem <<ssh_user>>@<<server>>
Checkliste:
Verwenden Sie die richtige PEM-Datei für den privaten Schlüssel?
Sind die Berechtigungen richtig eingestellt? (Meine AMIs von Amazon funktionieren mit 644, aber Red Hat muss mindestens 600 oder 400 sein. Ich kenne Ubuntu nicht.)
Verwenden Sie den richtigen Benutzernamen in Ihrer SSH-Zeile? Amazon-branded = "ec2-user", Red Hat = "root", Ubuntu = "ubuntu". Benutzer kann angegeben werden als "ssh -i pem benutzername @ hostname" OR "ssh -l benutzername -i pem hostname"
Die BY-Standardberechtigung lässt den PEM-Schlüssel nicht zu. Sie müssen nur die Berechtigung ändern:
chmod 400 xyz.pem
und wenn Ubuntu-Instanz dann verbinden mit:
ssh -i xyz.pem [email protected]
Nun, wenn ich mir deine Beitragsbeschreibung ansehe, habe ich das Gefühl, dass du zwei Fehler begangen hast:
Richtige Berechtigungen für den privaten Schlüssel festlegen . Der folgende Befehl soll Ihnen dabei 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 vermutlich eine Amazon Linux-Instanz erzeugt. Der Standardbenutzer für diesen Instanztyp ist ec2-user
. Wenn die Instanz Ubuntu gewesen wäre, wäre Ihr Standardbenutzer ubuntu
gewesen.
ssh -i privatekey.pem [email protected]_ip
Note: For an Amazon Linux AMI, the default user name is ec2-user. For a Centos AMI, the default user name is centos. For a Debian AMI, the default user name is admin or root. For a Fedora AMI, the default user name is ec2-user or Fedora. For a RHEL AMI, the default user name is ec2-user or root. For a SUSE AMI, the default user name is ec2-user or root. For an Ubuntu AMI, the default user name is ubuntu. Otherwise, if ec2-user and root don't work, check with the AMI provider.
quelle: https://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
Ihr Schlüssel darf nicht öffentlich sichtbar sein, damit SSH funktioniert. Verwenden Sie diesen Befehl bei Bedarf:
chmod 400 Interview-apps.pem
Connect to your instance using its Public DNS:
ec2-**-***-***-***.us-west-2.compute.amazonaws.com
Beispiel:
ssh -i "Interview-apps.pem" [email protected]**-***-***-***.us-west-2.compute.amazonaws.com
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: Wechseln Sie zum Speicherort der PEM-Datei und kopieren Sie sie an den Speicherort für die SSH-Datei nach Hause.
cp example.pem ~/.ssh/example.pem
Schritt 2: Ändern Sie die Berechtigung
chmod 400 ~/.ssh/example.pem
Schritt 3: Führen Sie den folgenden Befehl aus
ssh -i ~/.ssh/example.pem [email protected]
Da dieser Befehl zu lang ist, sollten Sie den Alias dieses Befehls mit den folgenden Befehlen erstellen:
vim ~/.bashrc
Schreiben Sie den gleichen Befehl zuletzt auf folgende Weise.
alias sshConnect='ssh -i ~/.ssh/example.pem [email protected]'
Starten Sie nun Ihr System neu und stellen Sie mit sshConnect
eine Verbindung zu Ihrem Server her.
Ich habe zwei Gründe für dieses Problem gesehen
1) Der Zugangsschlü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}
Es ist nur ein Berechtigungsproblem mit Ihrem aws-Schlüssel.
Ändern Sie einfach die Berechtigung des PEM-Schlüssels mit dem folgenden Befehl auf 400.
chmod 400 pemkeyname.pem
Wenn Sie nicht berechtigt sind, die Berechtigung einer Datei zu ändern, können Sie den folgenden Sudo-Befehl verwenden.
Sudo chmod 400 pemkeyname.pem
Ich hoffe das sollte gut funktionieren.
Was dies für mich behebt, ist das Verschieben der .pem-Datei innerhalb des Apps-Verzeichnisses. Also sagen wir fooapp ist der Name meiner App. Ich habe es direkt dort platziert.