Wie richte ich den SSH-Zugriff für eine Amazon EC2-Instanz ein?


87

Ich benötige SSH-Zugriff auf eine Amazon EC2-Instanz mit Ubuntu 10.4. Ich habe nur den Amazon-Benutzernamen und das Passwort. Irgendwelche Ideen?


2
Vergessen Sie nicht, chmod 400 my_private_key.pem.txt auszuführen, nachdem Sie es heruntergeladen haben.
Peter Kaminski

Antworten:


159

Grundsätzlich benötigen Sie eine Private-Key-Datei, um sich über SSH bei Ihrem EC2 anzumelden. Führen Sie die folgenden Schritte aus, um eine zu erstellen:

  • Gehen Sie zu https://console.aws.amazon.com/ec2/home und melden Sie sich bei Ihrem vorhandenen Amazon-Konto an.
  • Klicken Sie auf LHS oder https://console.aws.amazon.com/ec2/home?region=us-east-1#s=KeyPairs auf "Schlüsselpaare" .
    • Sie sollten die Liste der von Ihnen generierten KEYs (oder während des EC2-Erstellungsprozesses) sehen.
    • Klicken Sie auf "Schlüsselpaar erstellen", wenn Sie keine sehen oder Ihren privaten Schlüssel verloren haben.
    • Geben Sie einen eindeutigen Namen ein und drücken Sie die Eingabetaste.
    • Ein Download-Bereich wird angezeigt, in dem Sie den privaten Schlüssel speichern und speichern können.
    • Bewahren Sie es irgendwo mit der Dateiberechtigung "0600" auf.
  • Klicken Sie auf LHS oder https://console.aws.amazon.com/ec2/home?region=us-east-1#s=Instances auf "Instances"
    • Sie sollten die Liste der ec2-Instanzen sehen. Wenn Sie keine sehen, erstellen Sie bitte eine.
    • Klicken Sie auf den EC2-Computer und notieren Sie sich die öffentliche DNS-Adresse.
  • Öffnen Sie Ihr Terminal (unter Linux) und geben Sie den folgenden Befehl ein
    • ssh -i /path/to/private-key root@<ec2-public-dns-address>- Der Root-Benutzername wurde in den neuesten Versionen aufgrund Ihrer Distributionsauswahl ec2-useroder ubuntuIhres Benutzernamens vermieden .
    • drücke Enter
    • Das ist es.

6
Sie können sich wahrscheinlich nicht direkt über ssh als root anmelden. Sie müssen ein Nicht-Root-Konto wie ec2-user verwenden, also 'ssh -i / path / to / privater Schlüssel ec2-user @ hostname
timbo

4
Nachdem ich versucht hatte, eine Verbindung herzustellen, wurde mir mitgeteilt, dass ich ubuntustattdessen Login verwenden sollte root. Anscheinend habe ich Ubuntu Server 12.04 Instanz.
Vasiliy Stavenko

3
Ich habe erfolgreich ein SSH-Konto erstellt. Als Nächstes erfahren Sie, wie Sie Dateien mit SCP mit dem erstellten Konto hochladen. Wenn ich versuche, mit SCP hochzuladen, heißt es "Berechtigung verweigert (öffentlicher Schlüssel)".
Ashok KS

5
bekomme immer noch diese Massage "Erlaubnis verweigert (publickey)." Warum ist das so?
Kasun Kariyawasam

2
Sie erhalten "Erlaubnis verweigert (öffentlicher Schlüssel)". verwendet möglicherweise Elastic Beanstalk. In diesem Fall müssen Sie in die EB env-Konfiguration Sicherheit gehen und das neue Schlüsselpaar auswählen. Es werden neue EC2-Instanzen erstellt, die den Schlüssel akzeptieren. Und der Benutzername ist ec2-useroder vielleicht ubuntu, aber nicht root.
Jorge Orpinel

25
ssh -i /path/to/private-key ubuntu@<ec2-public-dns-address>

benutze einfach ubuntustatt root. Ihr Problem wird gelöst. Prost!


12

SCHRITT 1) Laden Sie private Schlüssel herunter, die Ihrem ec2-Computer zugewiesen sind (dies ist nur ein einmaliger Download beim Erstellen . Es wird daher empfohlen, irgendwo einen Commit durchzuführen).

SCHRITT 2) und feuern Sie folgende Befehle ab,

chmod 400 MyKeyPair.pem
ssh -i MyKeyPair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com

Offizielles Dokument : Herstellen einer Verbindung zu Ihren Linux / Unix-Instanzen über SSH


7

Beachten Sie, dass der aktuelle Benutzer für 13.04 "ubuntu" ssh -i ./mykey.pem ubuntu@ec2-xxx-xxx-xxx-1.compute-1.amazonaws.com ist


4

Sie müssen zuerst ein Schlüsselpaar erstellen - tun Sie dies mit Ihrer EC2-Konsole. Verwenden Sie dann Ihren privaten Schlüssel, um ec2-usermit einem SSH-Client Ihrer Wahl SSH auf den Server zu übertragen (der Benutzername lautet ).

Einmal in, können Sie ein ausgeben sudo su -, um root zu gewinnen, wenn Sie möchten (Hinweis: Sie können sich nicht direkt als root anmelden).


4

Wenn Sie MacOS verwenden, sollten Sie eine SSH-Konfigurationsdatei (~ / .ssh / config) erstellen / bearbeiten und Folgendes einfügen:

Host *.amazonaws.com
    User ubuntu
    Port 22
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null
    IdentityFile ~/PATH/YOUR_DOWNLOADED_KEY.pem

So stellen Sie eine Verbindung zu einer der EC2-Instanzen her:

ssh MYNAME.amazonaws.com

Nichts mehr!


Was ist, wenn ich Multi-Pal-Schlüssel für verschiedene Regionen wie us-east-1.pem und us-west-2.pem habe
Haseeb

1

Führen Sie die folgenden Schritte aus, um Ubuntu unter AWS einzurichten:

  1. Melden Sie sich bei Amazon Web Services an und wählen Sie EC2 aus .
  2. Wählen Sie Instanz starten und folgen Sie dem Assistenten, indem Sie das richtige Image (Ubuntu), den Instanztyp, das VPC-Netzwerk und das Subnetz, den Speicher und den SSH-Zugriff in Sicherheitsgruppen auswählen . Dann starten .
  3. Zum ersten Mal müssen Sie wahrscheinlich das Schlüsselpaar einrichten und der Instanz zuweisen. Sie können Schlüsselpaare auch in Schlüsselpaaren erstellen . Laden Sie nach der Erstellung die PEM-Datei herunter und bewahren Sie sie an einem sicheren Ort auf.
  4. Warten Sie nach dem Start der Instanz, bis die Instanz initialisiert ist und ausgeführt wird .

Führen Sie Folgendes aus, um über SSH auf die Instanz zuzugreifen:

  1. Stellen Sie eine Verbindung zur Linux-Box her, indem Sie Ihre PEM-Datei angeben, z

    ssh -i "file.pem" ubuntu@x.x.x.x
    

    Stellen Sie sicher, dass Ihre PEM-Datei über 600 Berechtigungen verfügt ( chmod 600 file.pem).

Fehlerbehebung

Wenn Sie mit VPC - Instanz und Ihre Sicherheitsgruppe korrekt ist (mit den richtigen Regeln) und es immer noch nicht funktioniert, in VPC Abschnitt überprüfen Sie Ihre Subnetz , die auf Ihren angebracht werden sollten VPC (beide verwendeten durch die Instanz) und Setup Neue Regel in der Routentabelle , die 0.0.0.0/0als Ziel und Ihr Internet-Gateway als Ziel hat .

Weitere Informationen finden Sie unter: Fehlerbehebung beim Herstellen einer Verbindung zu Ihrer Instanz

Siehe auch: Mögliche Gründe für eine Zeitüberschreitung beim Versuch, auf die EC2-Instanz zuzugreifen


1

1) Zuerst chmoddie .pem filezur Einschränkung der Dateiberechtigungen wie folgt

chmod 400 my-key-pair.pem

2) Dann sshmit den folgenden Befehlen direkt aus dem .sshOrdner

ssh -i my-key-pair.pem ec2-user@ec2-198-99-90-3.compute-1.amazonaws.com

Hinweis: - Zum Navigieren in einen .sshOrdner. Drücken Sie zuerst Ctrl + H, um alle versteckten Dateien anzuzeigen, und schließlichcd .ssh


0

Wenn Sie sich nicht als der richtige Benutzer für Ihre Betriebssystemdistribution anmelden, kann dies das Problem sein. Für bestimmte neue AMI lautet der Benutzername möglicherweise nicht "ubuntu", sondern "ec2-user". Für Amazon Linux glaube ich zum Beispiel, dass der Benutzer "ec2-user" ist. Eric Hammond gibt hier Beispiele: http://alestic.com/2014/01/ec2-ssh-username

Mein Vorschlag, versuchen Sie:

ssh -i /path/to/file.pem ec2-user@ec2...

ssh -i /path/to/file.pem ubuntu@ec2...

ssh -i /path/to/file.pem root@ec2...

Wenn Sie das falsche AMI haben, möchten Sie den Computer möglicherweise nur vollständig neu starten, damit Ihre Cluster einheitlich sind. Wenn dies Ihr Problem ist, möchten Sie wahrscheinlich zumindest für Ihre Linux-Boxen die gleichen OS-Distributionen.


0

Es reicht nicht aus, das zu tun, was in all diesen Antworten vorgeschlagen wird. Für jede Instanz sehen Sie eine Sicherheitsgruppe. Wenn Sie eine neue Instanz starten, wird dieses Element auf die Standardeinstellung gesetzt. Sie müssen die Sicherheitsgruppe bearbeiten und den SSH-Port hinzufügen. Später müssen Sie die Ports 8080, 8443, 80, 443 hinzufügen, auch wenn Sie Ihre Website hosten möchten.


0

Ich habe das AWS-Angebot angenommen, die Standardsicherheitsgruppen zu verwenden, die "All Trafic" -Ports enthalten.

Und nachdem ich viele Male versucht hatte, eine Verbindung zu meiner neuen ec2-Instanz herzustellen, wurde mir gerade klar, dass ich meine verwendete Sicherheitsgruppe bearbeiten und den 22-Port (ssh) manuell zu Inbound und Outbound hinzufügen sollte!

Ich hoffe es hilft !


0

Ändern Sie zuerst die Berechtigung der PEM-Datei durch

chmod 400 path/to/key_pair.pem

Fügen Sie in der Datei ~ / .ssh / config die folgenden Zeilen oben in die Datei ein

Host AWS
     Hostname myserver.com
     User myuser
     IdentityFile path/to/.pem/file
     port 22

Hostname nehmen IP oder Link des Servers, Benutzer nehmen Benutzername des Servers und Identitätsdatei ist eine Datei, die von AWS heruntergeladen wurde, als Sie die Instanz erstellt haben. Führen Sie einfach den folgenden Befehl im Terminal aus

ssh AWS

und geniesse es!

Hinweis : Zum Navigieren in einen .sshOrdner. Drücken Sie zuerst Ctrl + Hin den Home-Ordner, um alle versteckten Dateien anzuzeigen, und schließlichcd .ssh


0

Stellen Sie sicher, dass diese Sache in Schach ist

  1. Der private Schlüssel muss 400 Berechtigungen haben

  2. Stellen Sie sicher, dass Port 22 für die AWS-Instanz geöffnet ist, auf die Sie zugreifen möchten.

  3. ssh -i privatekey.pem ubuntu@XXX.XXX.XXX.XXX // XXX.XXX.XXX.XXX = Ihre öffentliche IP-Instanz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.