web-dev-qa-db-de.com

Versuch, SSH in eine Amazon Ec2-Instanz zu integrieren - Berechtigungsfehler

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
663
Matt Roberts

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

1296
Kof

Sie verwenden wahrscheinlich den falschen Benutzernamen, um sich anzumelden:

  • die meisten Ubuntu-Images haben einen Benutzer ubuntu
  • Amazons AMI ist ec2-user
  • die meisten Debian-Images haben entweder 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

253
Till

Ich weiß, das ist sehr spät im Spiel ... aber das immer funktioniert bei mir:

schritt 1

ssh-add ~/.ssh/KEY_PAIR_NAME.pem

schritt 2, einfach ssh rein :)

ssh [email protected]<instance public dns/ip>

z.B.

ssh [email protected]

hoffe das hilft jemandem.

59
user2838357

Ok Mann, das einzige was bei mir funktioniert hat war:

  1. Ändern Sie die Berechtigungen des Schlüssels

    chmod 400 mykey.pem

  2. 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]

37
bobobobo

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

27
renick

Ä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

14
Ayush Goyal

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.

9

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

  1. ssh-add xyz.pem
  2. ssh -i xyz.pem [email protected] (Beachten Sie, dass der Benutzer Ubuntu ist)
6

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
  ___|\___|___|
6
Ricardo Cid

Best Practices für SSH-Schlüssel und Dateiberechtigungen:

  • .ssh Verzeichnis - 0700 (nur vom Eigentümer)
  • private Key/.pem-Datei - 0400 (nur vom Eigentümer lesbar)
  • öffentliche Schlüssel-/PUB-Datei - 0600 (Lesen und Schreiben nur vom Eigentümer)

    chmod XXXX file/directory

4
Ryan

Zusätzlich zu den anderen Antworten habe ich Folgendes getan, damit dies funktioniert:

  • Kopieren Sie den Schlüssel in den Ordner .ssh, falls Sie dies noch nicht getan haben:

cp key.pem ~/.ssh/key.pem

  • Weisen Sie dem Schlüssel die entsprechenden Berechtigungen zu

chmod 400 ~/.ssh/key.pem

eval `ssh-agent -s` ssh-add

  • Fügen Sie dann den Schlüssel hinzu

ssh-add ~/.ssh/key.pem

Jetzt sollten Sie in der Lage sein, EC2 ssh (:

3
Rodrigo Nantes

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.

3
Syed Priom

Alternative Anmeldung mit PuTTY. Es ist gut, braucht aber ein paar Schritte.

  1. Rufen Sie Ihre .pem-Datei ab, die generiert wurde, als Sie die EC2-Instanz zum ersten Mal erstellt haben.
  2. Konvertieren Sie die .pem-Datei .ppk mit PuttyGen , da PuTTY .pem nicht liest.
  3. Öffnen Sie PuTTY und geben Sie Ihren Hostnamen ein, der Ihrem Instanzbenutzernamen und dem öffentlichen DNS (z. B. [email protected]) entspricht. compute.amazonaws.com). Nicht der Benutzername Ihres AWS-Kontos.
  4. Navigieren Sie dann zu Verbindung> SSH> Authentifizierung . Fügen Sie dann Ihre .ppk-Datei hinzu. Klicken Sie auf Durchsuchen , wo "Private Schlüsseldatei zur Authentifizierung" steht.
  5. Klicken Sie auf Öffnen und Sie sollten in der Lage sein, sofort eine Verbindung herzustellen.

Ich benutze PuTTY 0.66 in Windows.

3
jarvis

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.

2

Es kann drei Gründe für diesen Fehler geben.

  1. Sie verwenden einen falschen Schlüssel.
  2. Ihr Schlüssel verfügt nicht über die richtigen Berechtigungen. Sie müssen es auf 400 ändern.
  3. Sie verwenden den falschen Benutzer. Ubuntu-Images haben einen Benutzer bunt, Amazons AMI ist ec2-user und Debian-Images haben entweder root oder admin
2
Jagatveer Singh

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

2
sathee005

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]

1
singh30

Ä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>>
1
Prash

Checkliste:

  1. Verwenden Sie die richtige PEM-Datei für den privaten Schlüssel?

  2. 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.)

  3. 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"

1
fivedogit

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]

1
rahul kumar

Nun, wenn ich mir deine Beitragsbeschreibung ansehe, habe ich das Gefühl, dass du zwei Fehler begangen hast:

  1. Richtige Berechtigungen für den privaten Schlüssel festlegen . Der folgende Befehl soll Ihnen dabei helfen, die richtige Dateiberechtigung festzulegen.

    chmod 0600 mykey.pem

  2. 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
0
BigData-Guru

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.

0
Ajai

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}

0
Abhijit Barua

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.

0
Deepak N

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.

0
Nick Res