Wie verwende ich einen Bastion-Host, um eine sichere Verbindung zu meiner EC2-Linux-Instance in einem privaten Subnetz herzustellen?

Lesedauer: 5 Minute
0

Ich möchte einen Bastion-Host verwenden, um eine Verbindung zu meiner Amazon Elastic Compute Cloud (Amazon EC2)-Linux-Instance herzustellen, die in einem privaten Subnetz ausgeführt wird.

Kurzbeschreibung

EC2-Linux-Instances verwenden SSH-Schlüsselpaardateien als Standardauthentifizierungsmethode. Schlüsselpaardateien machen SSH-Benutzernamen und -Passwörter überflüssig. Um eine sichere Umgebung zu gewährleisten, sollten Sie niemals private Schlüssel auf dem Bastion-Host speichern. Um eine Verbindung über einen Bastion-Host herzustellen, verwenden Sie ssh-agent forwarding auf dem Client. Der ssh-agent ermöglicht es einem Administrator, eine Verbindung von der Bastion zu einer anderen Instance herzustellen, ohne den privaten Schlüssel auf der Bastion zu speichern.

Lösung

Voraussetzungen

  • Der Bastion-Host muss im öffentlichen Subnetz der VPC vorhanden sein, damit Sie über das Internet auf den Host zugreifen können.
  • Konfigurieren Sie die Sicherheitsgruppe der privaten Linux-Instance so, dass sie SSH-Verbindungen nur vom Bastion-Host akzeptiert.
  • Konfigurieren Sie die Sicherheitsgruppe des Bastion-Hosts so, dass SSH-Verbindungen (TCP/22) nur von bekannten und vertrauenswürdigen IP-Adressen aus zugelassen werden.

ssh-agent forwarding auf einem macOS- oder Linux-Client konfigurieren

Hinweis: Das Paket openssh-clients ist standardmäßig auf den meisten Linux- und MacOS-Distributionen installiert und enthält ssh-agent.

1.Führen Sie den folgenden Befehl aus, um den ssh-agent im Hintergrund zu starten. Der ssh-agent speichert Ihre SSH-Schlüssel im Speicher.

#  eval $(ssh-agent)

2.Führen Sie den folgenden Befehl aus, um den SSH-Schlüssel zum ssh-agent hinzuzufügen:

# ssh-add "/path/to/key.pem"

3.Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Schlüssel zum ssh-agent hinzugefügt wurden:

# ssh-add -l

4.Führen Sie den folgenden Befehl aus, um eine Verbindung zum Bastion-Host herzustellen. Ersetzen Sie im folgenden Befehl Benutzer und Bastion_Host_****IP_address durch die entsprechenden Werte für Ihren Anwendungsfall.

# ssh -A User@Bastion_Host_IP_Address

Hinweis: Stellen Sie sicher, dass Sie das**-A**-Flag in die vorherigen Befehl aufnehmen. Wenn Sie das -A-Flag nicht hinzufügen, funktioniert das ssh-agent forwarding nicht, da die Schlüssel nicht zum Speicher hinzugefügt werden. Nachdem Sie die SSH-Schlüssel zum Speicher hinzugefügt haben, müssen Sie den SSH-Schlüssel selbst nicht mit dem -i-Flag festlegen. Dies liegt daran, dass SSH automatisch versucht, alle SSH-Schlüssel zu verwenden, die in ssh-agent gespeichert sind.

5.Nachdem Sie eine Verbindung zum Bastion-Host hergestellt haben, führen Sie den folgenden Befehl aus, um eine Verbindung zur privaten Linux-Instance herzustellen. Ersetzen Sie im folgenden Befehl User und Private_instance_IP_address durch die entsprechenden Werte für Ihren Anwendungsfall.

# ssh User@Private_instance_IP_address

Wenn der passende private Schlüssel für die private Instance in ssh-agent geladen wird, ist die Verbindung erfolgreich.

ssh-agent forwarding auf einem Windows-Client konfigurieren

Mit PuTTY (einem kostenlosen SSH-Client für Windows) können Sie von Windows aus eine Verbindung zu Linux-VPC-Instances herstellen. Verwenden Sie Pageant (einen SSH-Authentifizierungsagenten), um die SSH-Agent-Funktionalität zu erhalten. Pageant speichert Ihre privaten Schlüssel. Wenn Pageant installiert ist, können Sie die Agent-Forwarding-Option in PuTTY verwenden, um eine Verbindung zu Instances in privaten Subnetzen herzustellen.

1.Laden Sie PuTTY und Pageant von der PuTTY-Downloadseite herunter und installieren Sie sie.

2.PuTTY unterstützt das PEM-Format für SSH-Schlüssel nativ nicht. Um mit PuTTY eine Verbindung zu Ihrer Instance herzustellen, verwenden Sie PuTTYgen, um Ihren privaten Schlüssel vom PEM-Format in das PuTTY-Format zu konvertieren. PuTTYgen ist auf der PuTTY-Downloadseite verfügbar. Weitere Informationen finden Sie unter Ihren privaten Schlüssel mit PuTTYgen konvertieren.

3.Öffnen Sie Pageant und fügen Sie die privaten Schlüssel hinzu. Um den Schlüssel im PuTTY-Format in Pageant zu importieren, starten Sie die Pageant-Anwendung über das Startmenü. Standardmäßig wird Pageant minimiert in der Taskleiste geöffnet.

Hinweis: Wenn das Pageant-Symbol in der Taskleiste nicht sichtbar ist, fügen Sie es mithilfe der Taskleisteneinstellungen hinzu. Weitere Informationen finden Sie unter Anpassen des Infobereichs der Taskleiste auf der Website support.microsoft.com

4.Um Ihre SSH-Schlüssel hinzuzufügen, klicken Sie mit der rechten Maustaste auf das Pageant-Symbol in der Taskleiste und wählen Sie dann Schlüssel hinzufügen aus. Um den hinzugefügten Schlüssel anzuzeigen, klicken Sie mit der rechten Maustaste auf das Pageant-Symbol in der Taskleiste und wählen Sie dann Schlüssel anzeigen aus.

5.Gehen Sie wie folgt vor, um eine PuTTY-SSH-Sitzung zu starten und die Option Agent-Forwarding zulassen zu aktivieren:

  • Wählen Sie im Startmenü Alle Programme, PuTTY, PuTTY aus.
  • Wählen Sie im Bereich Kategorie die Option Sitzung aus.
  • Führen Sie im Feld Hostname einen der folgenden Schritte aus:
    Um mithilfe des öffentlichen DNS-Namens Ihrer Instance eine Verbindung herzustellen, geben Sie user-name@instance-public-dns ein.
    Um über die IPv4-Adresse Ihrer Instance eine Verbindung herzustellen, geben Sie user-name@instance-IPv4-address ein.
  • Wählen Sie den Verbindungstyp SSH aus und stellen Sie sicher, dass der Portwert 22 ist.
  • Erweitern Sie im Bereich Kategorie die Option Verbindung, SSH und wählen Sie dann Auth aus.
  • Wählen Sie Agent-Forwarding zulassen aus.
  • Wählen Sie Öffnen aus.

6.Die können von der Bastion aus eine Verbindung zu jeder Instance in der VPC herstellen, ohne den privaten SSH-Schlüssel auf der Bastion zu speichern. Verwenden Sie den folgenden Befehl, um eine Verbindung zu anderen Instances herzustellen. Ersetzen Sie im folgenden Befehl User und Private_instance_IP_address durch die entsprechenden Werte für Ihren Anwendungsfall.

# ssh User@Private_instance_IP_address

Wenn der passende private Schlüssel für die private Instance in Pageant geladen wird, ist die Verbindung erfolgreich.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 10 Monaten