Erstellen einer SSH-Verbindung mit Amazon EC2-Instanz Connect
><> Wenn Sie Amazon EC2-Instanzen ausführen, müssen Sie diese verwalten. Die herkömmliche Methode zum Management von Remote-Linux-Rechnern besteht darin, sich über SSH mit Linux zu verbinden und die erforderlichen Befehle auszuführen, Konfigurationsdateien zu bearbeiten usw. Benutzer können sich über SSH mit einem Benutzernamen und einem Passwort oder mit einem Benutzernamen und einem Sicherheitsschlüssel bei Linux anmelden. Um jedoch über SSH eine Verbindung zu EC2-Instanzen herzustellen, können Benutzer nur einen Benutzername und einen Sicherheitsschlüssel verwenden. Diese Richtlinie ist in AWS EC2 für mehr Sicherheit festgelegt. In diesem Blogbeitrag wird erläutert, wie Sie von Windows- und Linux-Rechnern aus über SSH eine Verbindung zu AWS-Instanzen herstellen, auf denen Linux läuft.
Herunterladen eines Schlüssels von AWS
Wenn Sie mit dem Assistenten in der AWS Management Console eine neue EC2-Instanz erstellen, wird am Ende des Erstellungsprozesses ein Schlüsselpaar generiert. Ein Schlüsselpaar besteht aus einem privaten und einem öffentlichen Schlüssel. Secure Shell (SSH) ist das Verschlüsselungsprotokoll, und das Schlüsselpaar wird zur asymmetrischen Verschlüsselung der Verbindung verwendet. Ein öffentlicher Schlüssel kann mithilfe des privaten Schlüssels generiert werden. Wenn ein Schlüsselpaar für eine Amazon EC2-Instanz generiert wird, wird der öffentliche Schlüssel in der Konfiguration von Linux gespeichert, das auf der EC2-Instanz installiert ist, und der private Schlüssel wird vom Benutzer heruntergeladen.
Sie müssen den privaten Schlüssel im letzten Schritt des Erstellungsprozesses der Amazon EC2-Instanz herunterladen und an einem sicheren Ort speichern. Die EC2-Instanz kannerst erstellt, wenn Sie den privaten Schlüssel heruntergeladen haben. Der private Schlüssel wird in einer PEM-Datei bereitgestellt. Beachten Sie, dass dies Ihre einzige Möglichkeit ist, den Schlüssel für die aktuelle AWS EC2-Instanz herunterzuladen.
Ich lade den privaten Schlüssel herunter und speichere ihn als blog01-key.pem Datei.
CVerbindung zur EC2-Instanz über SSH Verwendung von PuTTY
PuTTY ist ein kostenloser SSH-Client, den Sie installieren können unter Windows. Sie müssen die heruntergeladene PEM-Datei in ein PPK-Dateiformat konvertieren, das von PuTTY unterstützt wird, bevor Sie sich über SSH mit AWS verbinden können. Aus diesem Grund müssen Sie das Dienstprogramm PuTTY Key Generator (PuTTYgen) verwenden, das zusammen mit PuTTY von einer einzigen Installationsdatei installiert wird. Sie können auch puttygen.exe manuell herunterladen. PuTTYgen wird zum Generieren von RSA- und DSA-Schlüsseln verwendet.
Als Ergebnis habe ich drei Dateien auf dem Windows-Rechner, von dem aus ich mich mit EC2-Instanzen verbinden werde:
blog01-key.pem
putty.exe
puttygen.exe
Diese Dateien befinden sich in diesem Beispiel unter „C:AWS SSH”.
Öffnen Sie den PuTTY Key Generator (PuTTYgen), indem Sie auf die Datei puttygen.exe oder eine Verknüpfung zu dieser Datei klicken.
Klicken Sie auf Laden Sie im PuTTYgen-Fenster.
Klicken Sie auf „Alle auswählen“ (*.*) und durchsuchen Sie die PEM-Datei. Wir wählen „C:AWS SSHblog01-key.pem“. Klicken Sie dann auf Öffnen Sie.
Lesen Sie die Anzeige und klicken Sie auf OK.
Jetzt können Sie die Zeichenfolge Ihres öffentlichen Schlüssels im Fenster von PuTTYgen sehen. Verwenden Sie die Konfiguration, wie sie auf dem Screenshot unten angezeigt wird.
Art des zu generierenden Schlüssels: RSA
Anzahl der Bits in einem generierten Schlüssel: 2048 Bit
Klicken Sie auf Privaten Schlüssel speichern.
Möchten Sie diesen Schlüssel wirklich ohne Passphrase zum Schutz speichern?
Klicken Sie auf Ja , wenn Sie zustimmen. Wenn Sie nicht zustimmen, gehen Sie zurück und schützen Sie den Schlüssel mit einer Passphrase.
Speichern Sie den privaten Schlüssel an einem sicheren Standort. Ich speichere den Schlüssel als „C:AWS SSHAWS EC2 SSH.ppk“. Klicken Sie auf Speichern Sie.
How To SSH into EC2-Instanz von Windows
Überprüfen Sie die öffentliche IP-Adresse Ihrer AWS EC2-Instanz. Die Instanz muss sich im laufenden Zustand befinden, um eine öffentliche IP-Adresse zu haben. In meinem Fall lautet die öffentliche IP-Adresse 52.55.222.44. Ich werde diese IP-Adresse für das Verbinden mit AWS über SSH verwenden.
Öffnen Sie PuTTY in Windows. Führen Sie putty.exe oder die entsprechende Verknüpfung aus.
Gehen Sie zu SSH > Auth.
Klicken Sie auf Durchsuchen und wählen Sie die PPK-Datei (den privaten Schlüssel) aus. Ich wähle die „C:AWS SSHAWS EC2 SSH.ppk“ aus, die zuvor in PuTTYgen erstellt wurde.
Kehren Sie zum Bildschirm „ <“ in PuTTY zurück und geben Sie die öffentliche IP-Adresse Ihrer EC2-Instanz in das Feld „ <“ ein. >Host Name (oder IP-Adresse) Feld ein. Stellen Sie sicher, dass der Verbindungstyp SSHist. Ich gebe 52.55.222.44ein, die IP-Adresse meiner EC2-Instanz, die ich von der EC2-Verwaltungskonsole kopiert habe. Der TCP-Port 22 ist ausgewählt. Klicken Sie auf Öffnen Sie.
Die Anzeige der Sicherheitswarnung wird angezeigt. Lesen Sie die Meldung und klicken Sie auf Akzeptieren Sie , um fortzufahren und sich mit einer EC2-Instanz zu verbinden. Dieser Dialog wird angezeigt, wenn Sie zum ersten Mal eine Verbindung zu einem bestimmten Remote-Rechner herstellen. Der in der Meldung angezeigte Fingerabdruck muss mit dem Fingerabdruck der EC2-Instanz übereinstimmen.
Geben Sie den Benutzername in das Konsolenfenster ein. Da ich Ubuntu Linux auf meiner Amazon EC2-Instanz verwende, benutze ich ubuntu, Dies ist der Standardbenutzername, der für diese Instanz konfiguriert ist, die von dem entsprechenden Amazon Machine Image (AMI) bereitgestellt wird.
Standardbenutzernamen für verschiedene Arten von Linux-AMIs in AWS:
- Amazon Linux 2 oder die Amazon Linux-AMI: ec2-user
- CentOS: centos oder ec2-user
- Debian: ADMIN
- Fedora: fedora oder ec2-user
- Red Hat Enterprise Linux (RHEL): ec2-user oder root
- SUSE: ec2-user oder root
- Ubuntu: ubuntu
- Oracle: ec2-user
- Bitnami: bitnami
Sobald Sie die Eingabeaufforderung einer Linux-Shell (in diesem Fall bash) sehen, können Sie Befehle auf dem Remote-Linux-Rechner ausführen, der in AWS läuft. Das bedeutet, dass Sie die richtige AWS EC2 SSH-Konfiguration in PuTTY eingerichtet haben.
Übertragen von Dateien über SSH an Amazon EC2-Instanzen
Ich habe den Remote-AWS-SSH-Zugriff auf die EC2-Instanz konfiguriert und kann nun über SSH eine Verbindung zu AWS-Instanzen verbinden, Befehle ausführen, Konfigurationen bearbeiten usw. Möglicherweise müssen Sie jedoch auch Dateien über SSH von Ihrem Windows-Rechner auf AWS-Instanzen oder in die andere Richtung übertragen. Es gibt Dateiübertragungsprotokolle, die über SSH funktionieren, um Dateien mit Sicherheit von einem Rechner auf einen anderen zu übertragen, zum Beispiel Secure File Transfer Protocol (SFTP) und Secure Copy Protocol (SCP).
Um Dateien über SSH von Windows auf AWS-Instanzen zu übertragen, können Sie WinSCP, ein kostenloses Tool für Windows. Beachten Sie, dass scp auf dem Remote-Linux-Rechner installiert sein muss, der in AWS läuft.
Nachdem Sie WinSCP auf dem Windows-Rechner installiert haben, starten Sie die Anwendung.
Wählen Sie SFTP als Dateiprotokoll und geben Sie im Feld Hostname die öffentliche IP-Adresse Ihrer EC2-Instanz ein, mit der Sie sich über SSH verbinden möchten, um Dateien zu übertragen. Geben Sie einen Benutzernamen für Ihre EC2-Instanz ein. Ich verwende 52.55.222.44 als IP-Adresse und ubuntu als Benutzername in meinem Beispiel.
Klicken Sie auf Erweitert im Hauptfenster von WinSCP.
Gehen Sie zu SSH > Authentifizierung im Erweiterte Einstellungen für Standorte Fenster. Klicken Sie auf „ <“ >… im Abschnitt „ <“ >Authentifizierungsparameter und wählen Sie den privaten Schlüssel aus, den Sie zuvor in PuTTYgen generiert haben. In meinem Fall wähle ich „C:AWS SSHAWS EC2 SSH.ppk“. Klicken Sie auf „ <“ >OK , um die Einstellungen zu speichern und zum Hauptfenster von WinSCP zurückzukehren.
Klicken Sie auf „ <“ >Login im Hauptfenster von WinSCP.
Es erscheint eine Warnmeldung, wie beim ersten Verbindungsaufbau mit einer EC2-Instanz über PuTTY. Klicken Sie auf Ja , um fortzufahren.
Wenn die AWS EC2 SSH-Konfiguration korrekt ist und Sie die SSH-Verbindungsparameter in WinSCP erfolgreich festgelegt haben, wird ein Fenster mit zwei Bereichen im Commander-Stil angezeigt. Der Benutzerordner des lokalen Windows-Computers wird im linken Fensterbereich angezeigt, und der Benutzer-Home-Ordner von Linux, das in AWS ausgeführt wird, wird im rechten Fensterbereich angezeigt. Sie können Dateien von einem Fensterbereich in einen anderen ziehen und dort ablegen sowie Dateien auf dem lokalen und dem Remote-Computer kopieren, umbenennen oder löschen.
Verbinden mit AWS über SSH von Linux
Im Gegensatz zu Windows verfügt Linux über einen nativen SSH-Client. Verwenden Sie in der Konsole Ihres lokalen Linux-Rechners den folgenden Befehl, um über SSH eine Verbindung zu AWS EC2-Instanzen herzustellen, auf denen Linux läuft:
ssh -i file_name.pem ubuntu@ip_address
Wechseln Sie zu dem Verzeichnis, in dem sich Ihre private Schlüssel-Datei .pem auf einem Linux-Rechner befindet. In diesem Beispiel verwende ich Ubuntu und habe die Datei blog01-key.pem heruntergeladen. ~/Downloads/heruntergeladen.
cd ~/Downloads/
ssh -i blog01-key.pem ubuntu@52.55.222.44
Dabei ist ubuntu der Benutzername auf dem entfernten Linux-Rechner und 52.55.222.44 die IP-Adresse des entfernten Linux-Rechners.
Wenn Sie diesen Befehl jetzt ausführen, erhalten Sie die folgende Fehlermeldung:
Warnung: Ungeschützte private Schlüsseldatei.
Die Berechtigungen für „blog01-key.pem” sind zu offen.
Ihr privater Schlüssel darf für andere nicht zugänglich sein.
Dieser private Schlüssel wird ignoriert. Schlüssel laden: pad-Berechtigung.
Berechtigung verweigert (öffentlicher Schlüssel).
Aus Gründen der Sicherheit müssen Sie niedrigere (strengere) Berechtigungen festlegen.
chmod 400 ./blog-key.pem
Verwenden Sie 400 , wenn die Schlüssel nur für Sie lesbar sein sollen.
Verwenden Sie 600 , wenn die Schlüssel für Sie lesbar und beschreibbar sein sollen.
Jetzt können Sie sich von Ihrem Linux-Rechner aus mit dem folgenden Befehl über SSH mit AWS EC2-Instanzen verbinden:
ssh -i blog01-key.pem ubuntu@52.55.222.44
Jetzt bin ich über SSH mit einer Amazon EC2-Instanz verbunden.
Übertragen von Dateien über SSH zu Amazon EC2 unter Linux
Sie können Dateien auch über SSH auf AWS-Instanzen übertragen, indem Sie SCP unter Linux verwenden. Stellen Sie sicher, dass Sie bereits eine AWS-SSH-Verbindung zu der Remote-Linux-Instanz von Ihrem lokalen Linux-Rechner aus hergestellt haben. Öffnen Sie dann eine neue Konsole auf Ihrem lokalen Linux-Rechner und verbinden Sie sich mit der EC2-Instanz, indem Sie den folgenden Befehl verwenden:
scp -i /path/key_name.pem /path/file_name.txt user_name@ec2_instance_IP_address:/path_to_file
In meinem Beispiel verwende ich den folgenden Befehl:
scp -i ~/Downloads/blog01-key.pem ~/Downloads/file.txt ubuntu@52.55.222.44:/home/ubuntu
Die Übertragung von Dateien über SSH auf die AWS-Instanz wurde erfolgreich abgeschlossen.
Um eine Datei in umgekehrter Richtung zu kopieren (von Linux in AWS EC2 auf Ihren lokalen Linux-Rechner), verwenden Sie den folgenden Befehl:
scp -i /path/key_name.pem user_name@ec2_instance_IP_address:/path_to_file/my-file.txt path/my-file2.txt
In meinem Fall verwende ich den Befehl:
scp -i ~/Downloads/blog01-key.pem ubuntu@52.55.222.44:/home/ubuntu/file1.txt ~/Downloads/file1-copy.txt
Wie Sie auf dem Screenshot sehen können, wurde die Datei erfolgreich kopiert. Sie können wichtige Dateien von einer Amazon EC2-Instanz auf den gewünschten lokalen Computer kopieren und die Dateien sichern. Führen Sie regelmäßig Amazon EC2-Backups durch, um Datenverluste zu vermeiden.
So fügen Sie einen neuen Schlüssel zu einer AWS-Instanz hinzu
Sie können ein zusätzliches Schlüsselpaar für eine vorhandene EC2-Instanz erstellen, um nach dem Erstellen der AWS EC2-Instanz über SSH eine Verbindung zu AWS-Instanzen zu verbinden. Dies kann erforderlich sein, um anderen Benutzern SSH-Zugriff auf die EC2-Instanz zu gewähren. Wenn Sie der Meinung sind, dass der Benutzer nicht über SSH mit AWS-Instanzen verbunden sein muss, können Sie den öffentlichen Schlüssel von dem unter AWS EC2 ausgeführten Linux-Rechner löschen, ohne einen neuen Schlüssel anstelle des bei der Instanz-Erstellung generierten Schlüssels erstellen zu müssen.
Öffnen Sie die EC2-Verwaltungskonsole im AWS-Management.
Gehen Sie zu Netzwerk & Sicherheit im Navigationsbereich und klicken Sie auf Schlüsselpaare.
Auf dieser Seite werden alle vorhandenen Schlüsselpaare angezeigt. Sie können einen Teil des Namens eines vorhandenen Schlüsselpaars in das Suchfeld eingeben, um das Schlüsselpaar zu finden.
Klicken Sie auf die Schaltfläche Schlüsselpaar erstellen in der oberen rechten Ecke der Weboberfläche, um ein neues Schlüsselpaar für eine vorhandene EC2-Instanz zu erstellen.
Wählen Sie .pem als Format für den privaten Schlüssel, wenn Sie einen Schlüssel unter Linux mit OpenSSH verwenden möchten, oder wählen Sie .ppk, wenn Sie den Schlüssel unter Windows mit PuTTY verwenden möchten. Da ich einen lokalen Linux-Rechner für das Verbinden mit AWS EC2-Instanzen über SSH mit einem neuen Schlüssel verwenden werde, wähle ich die Schlüsseloption .pem . Bei Bedarf können Sie Tags hinzufügen. Klicken Sie auf Schlüsselpaar erstellen , wenn Sie bereit sind, fortzufahren.
Speichern Sie die heruntergeladene Datei an einem sicheren Ort. In meinem Fall lautet der Name der heruntergeladenen Datei blog02-temp.pem und ich speichere diese Datei im Verzeichnis Downloads im Home-Verzeichnis des Benutzers.
Abrufen eines öffentlichen Schlüssels aus dem neuen Schlüsselpaar
Wir haben ein neues Schlüsselpaar in der Weboberfläche der AWS Management Console generiert. Jetzt müssen wir einen öffentlichen Schlüssel generieren, indem wir einen privaten Schlüssel von der heruntergeladenen .pem Datei.
Verwenden Sie den Befehl in diesem Format:
ssh-keygen -y -f /path_to_key_pair/my-key-pair.pem
In meinem Fall lautet der Befehl:
ssh-keygen -y -f ~/Downloads/blog02-temp.pem
Wenn Sie eine Fehlermeldung erhalten, legen Sie die richtigen Berechtigungen fest:
chmod 400 ~/Downloads/blog02-temp.pem
Wenn alles korrekt ist, wird ein generierter öffentlicher Schlüssel in der Konsolenausgabe angezeigt.
Kopieren Sie die generierte Schlüsselzeichenfolge und speichern Sie diese Informationen an einem sicheren Ort. In diesem Beispiel speichere ich die Schlüsselzeichenfolge in einer Textdatei.
Kopieren Sie die Schlüsselzeichenfolge in die Zwischenablage.
Verbinden Sie sich wie oben in diesem Beitrag beschrieben mit EC2-Instanzen über SSH von Ihrem lokalen Linux-Rechner.
Wir befinden uns jetzt in /home/Ubuntu/ .
Öffnen Sie die Konfigurationsdatei, in der die öffentlichen Schlüssel für den Zugriff auf die Amazon EC2-Instanz über SSH gespeichert sind, mit einem Texteditor:
nano ~/.ssh/authorized_keys
Der vollständige Pfad zu dieser Konfigurationsdatei hängt vom Linux AMI ab und kann wie folgt lauten:
/home/ubuntu/.ssh/authorized_keys
/home/ec2-user/.ssh/authorized_keys
/root/.ssh/authorized_keys
Fügen Sie Ihren Schlüssel aus der Zwischenablage in die zweite Zeile dieser Konfigurationsdatei ein.
Speichern Sie die Änderungen und schließen Sie die Datei.
Schließen Sie die Konsole (das Terminal) mit der aktuellen SSH-Sitzung, die Sie für die Verbindung mit der EC2-Instanz verwenden, nicht, bevor Sie sichergestellt haben, dass der zweite Schlüssel, den Sie hinzugefügt haben, funktioniert. Andernfalls können Sie die SSH-Verbindung verlieren, wenn die Konfiguration falsch ist, ohne die Möglichkeit, sich über SSH mit AWS-Instanzen zu verbinden. Sperren Sie sich im Falle eines Fehlers nicht aus!
Öffnen Sie ein weiteres Terminal auf Ihrem lokalen Linux-Rechner und versuchen Sie, sich mit einem neuen Schlüssel mit der Instanz zu verbinden. Ich gehe in das Verzeichnis, in dem sich meine .pem Schlüsseldateien befinden.
cd ~/Downloads/
Verbinden Sie sich von Ihrem lokalen Linux-Rechner aus über die neue Konsole mit der EC2-Instanz, auf der Linux in AWS läuft, indem Sie den neuen privaten Schlüssel definieren (blog02-temp.pem in diesem Fall).
ssh -i blog02-temp.pem ubuntu@52.55.222.44
Die AWS-SSH-Verbindung wurde erfolgreich mit dem neuen Schlüssel hergestellt. Jetzt können Sie den neuen Schlüssel (blog02-temp.pem) an einen Benutzer senden, der die AWS-SSH-Verbindung herstellen muss. Wenn Sie den SSH-Zugriff auf diese AWS-EC2-Instanz für den Benutzer deaktivieren müssen, löschen Sie die zweite Zeile von .ssh/authorized_keys auf Ihrer Remote-Linux-Instanz, die in AWS EC2 ausgeführt wird. Da die AWS-SSH-Konfiguration mit beiden Schlüsseln (dem ersten Schlüssel, der bei der Erstellung der EC2-Instanz generiert wurde, und dem zweiten Schlüssel, den Sie zuvor für einen anderen Benutzer erstellt haben, um sich mit AWS EC2 zu verbinden) einwandfrei arbeitet, können Sie die SSH-Terminalfenster schließen.
Wenn Sie ein Schlüsselpaar in löschen Netzwerk & Sicherheit > Schlüsselpaare in der EC2-Verwaltungskonsole (dem Ort, an dem wir den zweiten Schlüssel in der Weboberfläche der AWS-Verwaltungskonsole erstellt haben), werden die Schlüssel innerhalb der jeweiligen EC2-Instanzen nicht gelöscht.
Was tun, wenn Sie den AWS EC2 SSH-Schlüssel verlieren?
Wenn Sie den privaten Schlüssel für das Verbinden mit einer AWS EC2-Instanz verlieren (der beim Erstellen einer neuen EC2-Instanz generiert wurde), können Sie keine Verbindung mehr zu der entsprechenden Instanz herstellen. Sie können keinen neuen Schlüssel generieren und diesen in die AWS SSH-Konfigurationsdatei der aktuellen EC2-Instanz einfügen. In dieser Situation können Sie eine temporäre EC2-Instanz verwenden, auf die Sie SSH-Zugriff haben. Versuchen Sie den folgenden Workflow, um den AWS EC2 SSH-Zugriff auf die Instanz wiederherzustellen.
- Beenden Sie die ursprüngliche EC2-Instanz, deren AWS SSH-privater Schlüssel Sie verloren haben.
- Überprüfen Sie die Informationen zu den EBS-Volumes, die an die EC2-Instanz angehängt sind. Sie müssen das EBS-Volume identifizieren, das das unter Linux gemountete Root-/Volume enthält. Notieren Sie sich die Volume-ID dieses EBS-Volumes.
- Starten Sie eine temporäre Instanz in AWS EC2. Sie können die Instanz verwenden, auf der dieselbe Linux-Distribution läuft wie auf dem ursprünglichen Rechner (das AMI desselben Typs).
- Generieren Sie in der AWS Management Console ein neues Schlüsselpaar zum Verbinden mit AWS. Speichern Sie den privaten Schlüssel und bereiten Sie den öffentlichen Schlüssel vor. Sie müssen die Schlüsselzeichenfolge des öffentlichen Schlüssels generieren, um die AWS-SSH-Konfiguration zu reparieren, die auf dem Root-Volume gespeichert ist, das von der ursprünglichen Instanz verwendet wird.
- Erstellen Sie ein Verzeichnis in Linux, das auf der temporären EC2-Instanz ausgeführt wird, und mounten Sie das EBS-Volume, das die Root-/Partition der ursprünglichen EC2-Instanz enthält, auf die temporäre EC2-Instanz. Suchen Sie das benötigte EBS-Volume von der zuvor notierten Volume-ID.
- Öffnen Sie die AWS-SSH-Schlüsselkonfigurationsdatei (die sich in einem Verzeichnis wie /home/Ubuntu/.ssh/authorized_keys befand). Der Pfad ändert sich je nach dem Verzeichnis, in das Sie die Root-Partition der ursprünglichen EC2-Instanz gemountet haben. Fügen Sie die Schlüsselzeichenfolge des neuen öffentlichen Schlüssels zur AWS-SSH-Schlüsselkonfigurationsdatei hinzu.
- Hängen Sie das EBS-Volume, das von der ursprünglichen EC2-Instanz verwendet wird und an die temporäre EC2-Instanz angehängt ist, aus.
- Hängen Sie das EBS-Volume, das die bearbeitete AWS-SSH-Schlüsselkonfigurationsdatei enthält, wieder an die ursprüngliche EC2-Instanz an.
- Schalten Sie die ursprüngliche EC2-Instanz ein und verbinden Sie sich von SSH mit einem neuen Schlüsselpaar mit dieser Instanz.
Verwendung von EC2 Instance Connect
Die Schlüsselverwaltung ist ein wichtiger Bestandteil der AWS-Verwaltung, da Sie AWS EC2-SSH-Schlüssel für den Zugriff auf EC2-Instanzen an einem sicheren Ort behalten und deren Verlust verhindern müssen. Das Erstellen und Löschen von Schlüsseln, die für den temporären Zugriff anderer Benutzer erforderlich sind, kann bei einer großen Anzahl von Benutzern eine Routineaufgabe sein. Aus diesem Grund bietet Amazon die Möglichkeit, über EC2 Instance Connect eine Verbindung zu AWS EC2-Instanzen über SSH herzustellen. Mit dieser Funktion können Sie die SSH-Schlüsselverwaltung für die Verbindung mit AWS-Instanzen automatisieren.
Die Idee hinter der Verwendung von EC2 Instance Connect besteht darin, dass Sie Identity & Access Management (IAM)-Richtlinien erstellen, um den AWS SSH-Zugriff auf EC2-Instanzen zentral zu steuern, ohne SSH-Schlüssel manuell zu verwalten (erstellen, teilen, löschen). Schließlich können Benutzer einen SSH-Client, einen browserbasierten Client der AWS EC2-Konsole oder Amazon EC2 Instance Connect CLI für die Verbindung mit Amazon EC2-Instanzen verwenden.
Die Amazon Instance Connect API überträgt einen einmalig verwendbaren öffentlichen SSH-Schlüssel für 60 Sekunden an die Instanzmetadaten. Die mit dem IAM-Benutzer verknüpfte IAM-Richtlinie autorisiert den Benutzer. Der Benutzer muss sich innerhalb von 60 Sekunden mit diesem Schlüssel mit der EC2-Instanz verbinden. Nach Ablauf des Schlüssels muss ein neuer Schlüssel verwendet werden.
Amazon Instance Connect bietet Support für EC2-Instanzen, auf denen Ubuntu 16 (oder höher) und Amazon Linux 2 installiert sind. Amazon Instance Connect muss auf der EC2-Linux-Instanz installiert sein. Eine weitere Voraussetzung ist die Installation der AWS CLI auf dem Remote-Linux-Rechner, der in AWS läuft.
Nach der Installation führt EC2 Instance Connect das Skript aus, das Daten in diese Parameter in der Konfigurationsdatei (/etc/ssh/sshd_config) des SSH-Server-Daemons schreibt:
AuthorizedKeysCommand
AuthorizedKeysCommandUser
Die aktualisierte AuthorizedKeysCommand Konfiguration wird verwendet, um öffentliche AWS EC2 SSH-Schlüssel von den Metadaten der EC2-Instanz zu lesen. Wenn für diese Parameter bereits benutzerdefinierte Werte eingegeben wurden, aktualisiert (überschreibt) Instance Connect diese nicht, aber Sie können die Funktion in diesem Fall nicht verwenden.
Sie müssen eine Konfigurationsdatei im JSON-Format erstellen. Öffnen Sie IAM-Konsole, gehen Sie dann zu „Policies“ und klicken Sie auf „Create Policy“. Alternativ können Sie die Befehlszeilenschnittstelle auf Ihrem Linux-Rechner mit installierter AWS CLI verwenden. Das Konfigurationsbeispiel wird unten angezeigt. Diese Richtlinie kann Instanzen anhand der Instanz-ID identifizieren, um den Zugriff zu ermöglichen.
{
"Version": "2021-10-17",
"Statcodeent": [
{
"Effect": "Allow",
"Action": "ec2-instance-connect:SendSSHPublicKey",
"Resource": [
"arn:aws:ec2:region:account-id:instance/i-00000000000000000",
"arn:aws:ec2:region:account-id:instance/i-00000000000000001"
],
"Condition": {
"StringEquals": {
"ec2:osuser": "ami-username"
}
}
},
{
"Effect": "Allow",
"Action": "ec2:DescribeInstances",
"Resource": "*"
}
]
}
Anschließend muss die Richtlinie aktiviert werden. Der AWS-CLI-Befehl zum Aktivieren der Richtlinie sieht in etwa so aus:
aws iam create-policy --policy-name my-policy --policy-document file://JSON-file-name
Sie können die aktivierte Richtlinie dem entsprechenden Benutzer zuweisen.
aws iam attach-user-policy --policy-arn arn:aws:iam::account-id:policy/my-policy --user-name IAM-friendly-name
Um eine Verbindung zur Amazon EC2-Instanz herzustellen EC2-Konsole, wählen Sie die gewünschte Amazon EC2-Instanz aus und klicken Sie auf Verbinden Schaltfläche. Wählen Sie auf der Seite Verbinden mit instance die Registerkarte EC2-Instanz Verbinden und klicken Sie auf Verbinden.
Fazit
Das Verbinden mit AWS EC2-Instanzen über SSH ist ein wichtiger Teil des AWS EC2-Verwaltungsprozesses. In diesem Blogbeitrag wurde erläutert, wie Sie eine AWS EC2-SSH-Konfiguration vornehmen und von lokalen Linux- und Windows-Rechnern aus eine Verbindung zu AWS EC2-Instanzen herstellen, auf denen Linux läuft. Für die Herstellung der SSH-Verbindung mit EC2-Instanzen müssen Schlüsselpaare verwendet werden. Ein öffentlicher Schlüssel wird in der Konfiguration von Linux gespeichert, das in AWS EC2 ausgeführt wird, und ein privater Schlüssel wird von einem lokalen SSH-Client verwendet, der auf dem Rechner eines Benutzers installiert ist. Behalten Sie die Schlüssel an einem sicheren Ort und erstellen Sie regelmäßig Backups, um Datenverluste, Zeit und Kosten zu vermeiden.






























