
Ich habe zwei EC2-Instanzen auf AWS erstellt. Ich habe für jede ein Schlüsselpaar erstellt. Ich habe die privaten .pem-Schlüssel heruntergeladen und in .ppk
das Format konvertiert. Ich kann mit jeder meiner EC2-Instanzen über PuTTY und ihren privaten .ppk-Schlüssel eine Verbindung herstellen. Aber wie stelle ich per SSH von einer meiner EC2-Instanzen auf die andere her? Ich kann den öffentlichen DNS einer der beiden von der anderen aus anpingen. Aber wenn ich versuche, per SSH von einer zur anderen zu wechseln, erhalte ich:
Berechtigung verweigert (öffentlicher Schlüssel).
Antwort1
Methode 1 – Verwenden Sie auf den Servern dieselben Schlüssel:
Konvertieren Sie die Schlüssel in das OpenSSH-Formatund laden Sie die privaten Schlüssel auf die Server hoch. Wenn Sie per SSH auf den Zielhost zugreifen, geben Sie die private Schlüsseldatei an:
ssh -i mykey.pem private.ip.of.other.server
Methode 2 - Neue Schlüssel erstellen
Führen Sie auf jedem Server Folgendes aus:
ssh-keygen
Drücken Sie die Eingabetaste. Sie erhalten zwei Dateien:
.ssh/id_rsa
.ssh/id_rsa.pub
AnServer A, cat und kopiere den öffentlichen Schlüssel in die Zwischenablage:
cat ~/.ssh/id_rsa.pub
[select and copy to your clipboard]
ssh inServer B, und hängen Sie den Inhalt davon an die entsprechende Datei authorized_keys an:
cat >> ~/.ssh/authorized_keys
[paste your clipboard contents]
[ctrl+d to exit]
Jetzt SSH von Server A:
ssh -i ~/.ssh/id_rsa private.ip.of.other.server
Antwort2
Es gibt eine dritte und meiner Meinung nach beste Lösung, die so genannteSSH-Agent-Weiterleitung:
- Konfigurieren Sie auf dem lokalen Computer ~/.ssh/config, indem Sie den folgenden Abschnitt hinzufügen:
Host <ip-or-name-of-A-server> ForwardAgent yes
- Ich gehe davon aus, dass Sie auf Server A und B Ihr lokales ~/.ssh/id_rsa.pub zu ~/.ssh/authorized_keys des Servers hinzugefügt haben.
Während Sie auf Server A arbeiten, können Ihre Schlüssel für die weitere SSH-Kommunikation verwendet werden – zB:
- Verbindung zu einem anderen Server mit einem SSH-Client herstellen - in diesem Fall zu Server B,
- scp (sichere Kopie),
- git - Sie können mit Ihrer lokalen Identität in Ihre Remote-Git-Repositorys pullen/pushen
- usw.
So überprüfen Sie, ob dies funktioniert:
- Verbindung zum Server A herstellen
- Überprüfen Sie, ob eine Socket-Verbindung für den Schlüsselaustausch besteht, indem Sie die Umgebungsvariable SSH_AUTH_SOCK erkennen:
set|grep SSH_AUTH_ # output should be something like this: SSH_AUTH_SOCK=/tmp/ssh-sEHiRF4hls/agent.12042
Anmerkungen:
- Sie müssen einen laufenden SSH-Agenten haben - Linux:,
ps -e | grep [s]sh-agent
für Windows prüfen Sie die Putty-Dienstprogramme Pagent und Plink - Referenz:https://help.github.com/articles/using-ssh-agent-forwarding
- Fehlerbehebung bei SSH:
https://confluence.atlassian.com/display/BITBUCKET/Troubleshoot+SSH+Issues
Antwort3
Eine neue AWS-Lösung für das Problem.
Hier ist ein Blog-Beitrag dazu:
Bitte beachten Sie:
Die öffentlichen SSH-Schlüssel sind in den Instanzmetadaten nur für 60 Sekunden zur einmaligen Verwendung verfügbar. Um erfolgreich eine Verbindung zur Instanz herzustellen, müssen Sie innerhalb dieses Zeitfensters eine Verbindung per SSH herstellen. Da die Schlüssel ablaufen, müssen Sie diese Schlüssel nicht wie zuvor direkt verfolgen oder verwalten.