Wie ssh von einer ec2-Instanz zur anderen?

7765
Stephen Walsh

Ich habe zwei EC2-Instanzen in AWS erstellt. Ich habe für jedes ein Schlüsselpaar erstellt. Ich habe die privaten .pem-Schlüssel heruntergeladen und in ein .ppkFormat umgewandelt. Ich kann mit PuTTY und ihrem privaten .ppk-Schlüssel eine Verbindung zu jeder meiner ec2-Instanzen herstellen. Aber wie kann ich SSH von einer meiner ec2-Instanz zur anderen machen? Ich kann den öffentlichen DNS von jedem von dem anderen pingen. Wenn ich jedoch ssh von einem zum anderen versuche, bekomme ich:

Erlaubnis verweigert (publickey).

1
Richten Sie diese Schlüssel in Ihre Schlüsselpaare ein (nur die öffentliche Hälfte). Starten Sie mit jedem dieser Schlüsselpaare zwei neue Instanzen. Laden Sie alles (insbesondere die private Hälfte) als designierten Client hoch (z. B. wird für Schlüssel A die Instanz B gestartet, und die private Hälfte wird in die Instanz A hochgeladen). Skaperen vor 7 Jahren 0
Ich denke, Sie müssen möglicherweise die Schlüssel in ein openssh-Format konvertieren: http://stackoverflow.com/questions/2224066/how-to-convert-ssh-keypairs-generated- using-puttygenwindows-into-key-pairs-use# 2224204 matiu vor 7 Jahren 0

2 Antworten auf die Frage

4
matiu

Methode 1 - Verwenden Sie dieselben Schlüssel auf den Servern:

Konvertieren Sie die Schlüssel in das openssh-Format und laden Sie die privaten Schlüssel auf die Server hoch . Wenn Sie mit dem Zielhost ssh ausführen, geben Sie die private Schlüsseldatei an:

ssh -i mykey.pem private.ip.of.other.server 

Methode 2 - Neue Schlüssel erstellen

Auf jedem Serverlauf:

ssh-keygen 

Drücken Sie die Eingabetaste. Sie haben zwei Dateien:

.ssh/id_rsa .ssh/id_rsa.pub 

Kopieren Sie den öffentlichen Schlüssel auf Server A in die Zwischenablage:

cat ~/.ssh/id_rsa.pub [select and copy to your clipboard] 

ssh in Server B, und hängen Sie den Inhalt davon an die Datei authorized_keys an:

cat >> ~/.ssh/authorized_keys [paste your clipboard contents] [ctrl+d to exit] 

Jetzt ssh vom Server A:

ssh -i ~/.ssh/id_rsa private.ip.of.other.server 
Vielen Dank für eine so einfache und unkomplizierte Erklärung! Es hat perfekt funktioniert. raphael75 vor 6 Jahren 0
3
Robert Lujo

Es gibt eine 3. und IMHO die beste Lösung, die sogenannte ssh-Agent-Weiterleitung :

  • Konfigurieren Sie ~ / .ssh / config auf dem lokalen Computer, indem Sie folgenden Abschnitt hinzufügen:
Host <ip-or-name-of-A-server> ForwardAgent yes 
  • Ich nehme an, auf Server A und B haben Sie Ihre lokalen ~ / .ssh / id_rsa.pub zu ~ / .ssh / authorized_keys des Servers hinzugefügt

Während Sie auf Server A arbeiten, können Ihre Schlüssel für die weitere ssh-Kommunikation verwendet werden, z.

  • Verbindung zu einem anderen Server mit SSH-Client - in diesem Fall zu Server B,
  • scp (sichere Kopie),
  • git - Sie können Ihre lokalen Identitäten für Ihre Remote-Git-Repositories verwenden
  • usw.

So prüfen Sie, ob dies funktioniert:

  • Verbindung zum Server A
  • Prüfen Sie, ob eine Socket-Verbindung für den Schlüsselaustausch besteht, indem Sie SSH_AUTH_SOCK env var ermitteln:
set|grep SSH_AUTH_ # output should be something like this: SSH_AUTH_SOCK=/tmp/ssh-sEHiRF4hls/agent.12042 

Anmerkungen:

Sie müssen auch sicherstellen, dass die Sicherheitsgruppe eine Eingangsregel für Port 22 (SSH) mit Ihrem EC2-Subnetz als Quelle hat. weston vor 5 Jahren 0