Wie kann ich über ssh eine Verbindung zu einer AWS-Instanz herstellen?
Ich habe:
- Bei AWS angemeldet;
- Erstellt einen öffentlichen Schlüssel und ein Zertifikat auf der AWS-Website und speichert sie auf der Festplatte.
Ging zu meiner Konsole und erstellte Umgebungsvariablen:
$ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/ $ export EC2_CERT=/home/default/aws/cert-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem $ export EC2_PRIVATE_KEY=/home/default/aws/pk-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
Hat AWS API angewiesen, dieses Schlüsselpaar zu verwenden, und das Schlüsselpaar in einer Datei gespeichert:
$ ec2-add-keypair ec2-keypair > ec2-keypair.pem
Startete eine AWS Ubuntu 9-Instanz mit diesem Schlüsselpaar:
$ ec2-run-instances ami-ed46a784 -k ec2-keypair
Es wurde versucht, eine SSH-Verbindung zur Instanz herzustellen:
$ ssh -v -i ec2-keypair.pem [email protected] OpenSSH_5.1p1 Debian-5ubuntu1, OpenSSL 0.9.8g 19 Oct 2007 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Connecting to ec2-174-129-185-190.compute-1.amazonaws.com [174.129.185.190] port 22. debug1: Connection established. debug1: identity file ec2-keypair.pem type -1 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5ubuntu1 debug1: match: OpenSSH_5.1p1 Debian-5ubuntu1 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.1p1 Debian-5ubuntu1 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-cbc hmac-md5 none debug1: kex: client->server aes128-cbc hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Host 'ec2-174-129-185-190.compute-1.amazonaws.com' is known and matches the RSA host key. debug1: Found key in /home/default/.ssh/known_hosts:11 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Trying private key: ec2-keypair.pem debug1: read PEM private key done: type RSA debug1: Authentications that can continue: publickey debug1: No more authentication methods to try. Permission denied (publickey).
Was könnte das Problem sein und wie kann es funktionieren?
Antworten:
Für Ubuntu-Instanzen:
In anderen Fällen müssen Sie möglicherweise
ec2-user
anstelle von verwendenubuntu
.Bei den meisten von mir verwendeten EC2-Linux-Images wurde standardmäßig nur der Root-Benutzer erstellt.
Siehe auch: http://www.youtube.com/watch?v=WBro0TEAd7g
quelle
Jetzt ist es:
quelle
In den Veröffentlichungen von Canonical wird standardmäßig der Benutzer "Ubuntu" für alle Benutzer verwendet, die hier mit einem Ubuntu-Image landen, bei dem das gleiche Problem auftritt.
quelle
Wenn Sie ein Bitnami-Bild verwenden, melden Sie sich als 'bitnami' an.
Scheint offensichtlich, aber etwas, das ich übersehen habe.
quelle
Seems <sarcasm>obvious</sarcasm>
Für meine Ubuntu-Bilder ist es tatsächlich ein Ubuntu-Benutzer und NICHT der ec2-Benutzer;)
quelle
Ubuntu 10.04 mit openSSH
Dies ist die genaue Verwendung:
beispielsweise:
Das obige Beispiel stammt direkt aus dem AWS-Lernprogramm für die Verbindung mit einem Linux / UNIX-Computer unter: http://docs.amazonwebservices.com/AWSEC2/latest/GettingStartedGuide/
quelle
Es wird sich auch beschweren, wenn die PEM-Dateiberechtigungen zu offen sind. chmod die Datei auf 600, um das zu beheben.
quelle
chmod 600 your_file.pem
Ich bin auch darauf gestoßen - es stellte sich heraus, dass ich ein von der Community erstelltes AMI verwendet habe - und der Standardbenutzername war niehter root, noch war es ect-user oder ubuntu. Tatsächlich hatte ich keine Ahnung, was es war - bis ich ' root ' versuchte und der Server mich freundlich bat, mich als xxx anzumelden, wobei xxx das ist, was es Ihnen sagt.
-Prost!
quelle
Sie müssen Ihren privaten Schlüssel auf Ihrem lokalen Computer haben
Sie müssen die IP-Adresse oder den DNS-Namen Ihres Remote-Computers oder Servers kennen. Diese können Sie über die AWS-Konsole abrufen
Wenn Sie ein Linux-Benutzer sind
chmod 600 <path to private key file>
) sind.ssh -i <path to private key file> <user>@<IP address or DNS name of remote server>
) eine Verbindung zu Ihrem Computer herWenn Sie ein Windows-Benutzer sind
quelle
verwenden...
Verwenden Sie nicht die Berechtigung 600, da Sie sonst Ihren Schlüssel möglicherweise versehentlich überschreiben.
quelle
das hat bei mir funktioniert:
Das Löschen der auf der Workstation gespeicherten alten Schlüssel funktioniert auch mit statt
dann das gleiche ssh wieder machen es hat funktioniert:
In Ubuntu-Instanzen lautet der Benutzername: Ubuntu unter Amazon Linux AMI. Der Benutzername lautet: ec2-user
Ich musste die Instanz nicht aus einem Image neu erstellen.
quelle
Für Debian EC2-Instanzen ist der Benutzer
admin
.quelle
Es müssen 2 Schritte verbunden werden:
Chmod 400 auf Ihrem privaten Schlüssel, so können die anderen nicht auf Ihren Schlüssel zugreifen:
Um eine Verbindung zu Ihrer Instanz in SSH herzustellen, müssen Sie die öffentliche IP-Adresse Ihrer Instanz kennen:
Ich hoffe es hilft !
quelle
Wenn Sie EBS verwenden, können Sie auch versuchen, das EBS-Volume auf einer laufenden Instanz bereitzustellen. Mounten Sie es dann auf dieser laufenden Instanz und sehen Sie, was in / home los ist. Sie können Dinge sehen, wie ist der Benutzer Ubuntu oder Ec2-Benutzer? oder hat es die richtigen öffentlichen Schlüssel unter ~ / .ssh / authorized_keys
quelle
Erlaubnis für
ec2-keypair.pem
sollte sein400
chmod 400 ec2-keypair.pem
quelle
Wenn Sie ein AWS-Image von Bitnami ausführen. Der Benutzername wäre bitnami. Prost!
Sehen Sie sich mein Debug an und schauen Sie sich das letzte an:
* *
* *
quelle
In meinem Fall (Mac OS X) war das Problem der Unterbrechungstyp der Datei. Versuche dies:
1.- Öffnen Sie die PEM-Datei mit TextWrangler
2.- Überprüfen Sie am Ende der App, ob der Unterbrechungstyp "Windows (CRLF)" ist.
quelle
Sein ec2-Benutzer für Amazon Linux AMIs und Ubuntu für Ubuntu-Images. Auch RHEL 6.4 und höher ec2-Benutzer RHEL 6.3 und früher root Fedora ec2-Benutzer Centos root
quelle
Einfach zu dieser Liste hinzufügen. Ich hatte heute Morgen Probleme mit einem neuen Benutzer, der gerade einer AWS EC2-Instanz hinzugefügt wurde. Um auf den Punkt zu kommen , war das Problem Selinux (das in der Durchsetzung war ), zusammen mit der Tatsache, dass sich mein Benutzer-Home-Verzeichnis auf einem neuen EBS-Volume befand. Irgendwie mag Selinux dieses andere Volume nicht. Ich habe eine Weile gebraucht, um das herauszufinden, da ich alle anderen üblichen SSH-Probleme durchgesehen habe (/ etc / ssh / sshd_config war in Ordnung, natürlich kein Passwort erlaubt, Berechtigungen waren richtig usw.)
Die Reparatur?
Im Moment (bis ich verstehe, wie man einem Benutzer erlaubt, auf ein anderes Volume zu ssh oder dieses Volume irgendwie zu einem echten Home-Dir-Punkt zu machen):
Das ist es. Jetzt kann sich mein neuer Benutzer mit seinem eigenen Schlüssel id_rsa anmelden.
quelle
Hatte das gleiche Problem. Berechtigung verweigert (publickey) beim Versuch, sich mit 'ec2-user' oder 'root' anzumelden.
Die AMI-Nummer des Computer-Images wurde gegoogelt und die SSH-Anmeldeinformationen wurden direkt auf der Debian-Wiki-Seite angezeigt.
Hoffe das hilft.
quelle