Erstellen einer SSH-Verbindung mit Amazon EC2-Instanz Connect
Wenn Sie Amazon EC2-Instanzen betreiben, müssen Sie diese verwalten. Die herkömmliche Methode zum Management von Remote-Linux-Rechnern besteht darin, über SSH eine Verbindung zu Linux herzustellen und dort die erforderlichen Befehle auszuführen, Konfigurationsdateien zu bearbeiten usw. Benutzer können sich über SSH bei Linux anmelden, indem sie einen Benutzernamen und ein Passwort oder einen Benutzernamen und einen Sicherheitsschlüssel verwenden. Um jedoch eine Verbindung zu EC2-Instanzen über SSH herzustellen, können Benutzer jedoch nur einen Benutznamen und einen Sicherheitsschlüssel verwenden. Diese Richtlinie ist in AWS EC2 aus Gründen der Sicherheit festgelegt. In diesem Blogbeitrag wird erläutert, wie Sie von Windows- und Linux-Rechnern aus über SSH eine Verbindung zu AWS-Instanzen herstellen können, auf denen Linux läuft.
Einen Schlüssel von AWS herunterladen
Wenn Sie eine neue Amazon EC2-Instanz mithilfe des Assistenten in der AWS Management Console erstellen, wird ein Schlüsselpaar am Ende des EC2-Instanzerstellungsprozesses generiert. Ein Schlüsselpaar besteht aus einem privaten Schlüssel 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, das auf der EC2-Instanz installiert ist, gespeichert, und der private Schlüssel wird vom Benutzer heruntergeladen.
Sie müssen den privaten Schlüssel beim letzten Schritt des Amazon EC2-Instanzerstellungsprozesses herunterladen und den Schlüssel an einem sicheren Ort speichern. Die EC2-Instanz wird nicht erstellt, bis Sie den privaten Schlüssel herunterladen. Der private Schlüssel wird in einer PEM-Datei bereitgestellt. Beachten Sie, dass dies Ihre einzige Gelegenheit ist, den Schlüssel für die aktuelle AWS EC2-Instanz herunterzuladen.
Ich lade den privaten Schlüssel herunter und speichere den Schlüssel als blog01-key.pem Datei.
V erbinden zur EC2-Instanz über SSH unter Verwendung von PuTTY
PuTTY ist ein kostenloser SSH-Client, den Sie installieren auf Windows nutzen können. 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 PuTTY Key Generator (PuTTYgen) Dienstprogramm verwenden, das mit PuTTY aus einer einzigen Installationsdatei installiert wird. Sie können auch puttygen.exe manuell herunterladen. Mit PuTTYgen werden RSA- und DSA-Schlüssel generiert.
Dadurch habe ich drei Dateien auf dem Windows-Computer, von dem ich mich mit EC2-Instanzen verbinden werde:
blog01-key.pem
putty.exe
puttygen.exe
Diese Dateien sind in „ C:AWS SSH “ in diesem Beispiel gespeichert.
Öffnen Sie den PuTTY Key Generator (PuTTYgen), indem Sie auf die puttygen.exe Datei oder eine Verknüpfung zu dieser Datei klicken.
Klicken Sie im PuTTYgen-Fenster Load.
Klicken Sie auf Alle Dateien auswählen (*.*) und durchsuchen Sie die PEM-Datei. Wir wählen „ C:AWS SSHblog01-key.pem „. Klicken Sie dann auf Open.
Lesen Sie den angezeigten Hinweis und drücken Sie OK.
Nun können Sie den String Ihres öffentlichen Schlüssels im Fenster von PuTTYgen sehen. Verwenden Sie die Konfiguration wie auf dem unten angezeigten Screenshot.
Typ des zu generierenden Schlüssels: RSA
Anzahl der Bits in einem generierten Schlüssel: 2048 Bit
Sind Sie sicher, dass Sie diesen Schlüssel ohne Passphrase speichern möchten, um ihn zu schützen?
Drücken Sie Yes, wenn Sie einverstanden sind. Falls nicht, 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 unter „ C:AWS SSHAWS EC2 SSH.ppk „. Drücken Sie Save.
Wie man per SSH in eine EC2-Instanz einloggt von Windows
Prüfen Sie die öffentliche IP-Adresse Ihrer AWS EC2-Instanz. Die Instanz muss im Laufzustand sein, 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 die Verbindung zu AWS per SSH nutzen.
Öffnen Sie PuTTY in Windows. Führen Sie putty.exe oder die entsprechende Verknüpfung aus.
Gehen Sie zu SSH > Auth.
Klicken Sie auf Browse und wählen Sie die PPK-Datei (den privaten Schlüssel) aus. Ich wähle die Datei C:AWS SSHAWS EC2 SSH.ppk , die zuvor in PuTTYgen generiert wurde.
Gehen Sie zurück zum Session Bildschirm in PuTTY und geben Sie die öffentliche IP-Adresse Ihrer EC2-Instanz im Feld Host Name (oder IP-Adresse) ein. Stellen Sie sicher, dass der Verbindungstyp auf SSH eingestellt ist. Ich gebe 52.55.222.44 ein, was die IP-Adresse meiner EC2-Instanz ist, kopiert aus der EC2-Verwaltungskonsole. Der TCP-Port 22 ist ausgewählt. Drücken Sie Open.
Die Sicherheitswarnung wird angezeigt. Lesen Sie die Meldung und drücken Sie Accept, um fortzufahren und sich mit der EC2-Instanz zu verbinden. Dieses Dialogfeld wird angezeigt, wenn Sie sich erstmals mit einer bestimmten Remote-Maschine verbinden. Der in der Meldung angezeigte Fingerabdruck muss mit dem Fingerabdruck der EC2-Instanz übereinstimmen.
Geben Sie den Benutzernamen im Konsolenfenster ein. Da ich Linux-Ubuntu auf meiner EC2-Instanz verwende, benutze ich ubuntu,, was der voreingestellte Benutzername für diese von der entsprechenden Amazon Machine Image (AMI) bereitgestellte Instanz ist.
Voreingestellte Benutzernamen für verschiedene Typen von Linux-AMIs in AWS:
- Amazon Linux 2 oder das 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 der Remote-Linux-Maschine ausführen, die in AWS läuft. Dies bedeutet, dass Sie die richtige AWS EC2 SSH-Konfiguration in PuTTY eingerichtet haben.
Dateien über SSH zu Amazon EC2-Instanzen übertragen
Ich habe den remote AWS SSH-Zugang zur EC2-Instanz konfiguriert und kann nun über SSH auf AWS-Instanzen zugreifen, Befehle ausführen, Konfigurationen bearbeiten, usw. Möglicherweise müssen Sie jedoch auch Dateien über SSH zu AWS-Instanzen von Ihrem Windows-Rechner oder in die andere Richtung übertragen. Es gibt Dateiübertragungsprotokolle, die über SSH funktionieren, um Dateien sicher von einer Maschine zu einer anderen zu übertragen, wie etwa das Secure File Transfer Protocol (SFTP) und das Secure Copy Protocol (SCP).
Um Dateien über SSH zu AWS-Instanzen von Windows zu übertragen, können Sie WinSCP verwenden, ein kostenloses Tool für Windows. Beachten Sie, dass scp auf der Remote-Linux-Maschine, die in AWS läuft, installiert sein muss.
Sobald Sie WinSCP auf dem Windows-Rechner installiert haben, führen Sie die Anwendung aus.
Wählen Sie SFTP als Dateiübertragungsprotokoll und geben Sie im Feld Hostname die öffentliche IP-Adresse Ihrer EC2-Instanz ein, zu der Sie sich über SSH verbinden möchten, um Dateien zu übertragen. Geben Sie einen Benutzernamen für Ihre EC2-Instanz ein. In meinem Beispiel verwende ich 52.55.222.44 als IP-Adresse und ubuntu als Benutzernamen.
Klicken Sie im Hauptfenster von WinSCP auf Advanced.
Gehen Sie zu SSH > Authentication im Fenster Erweiterte Seiteneinstellungen . Klicken Sie auf … im Abschnitt Authentifizierungsparameter und wählen Sie den zuvor in PuTTYgen generierten privaten Schlüssel aus. In meinem Fall wähle ich „ C:AWS SSHAWS EC2 SSH.ppk “ aus. Drücken Sie OK, um die Einstellungen zu speichern und zum Hauptfenster von WinSCP zurückzukehren.
Klicken Sie im Hauptfenster von WinSCP auf Login.
Eine Warnmeldung erscheint, so wie es beim ersten Verbindungsversuch zur EC2-Instanz mit PuTTY der Fall war. Drücken Sie Yes, um fortzufahren.
Wenn die AWS EC2 SSH-Konfiguration korrekt ist und Sie die SSH-Verbindungsparameter in WinSCP erfolgreich eingestellt haben, sehen Sie das Fenster mit zwei Bereichen im Commander-Stil. Der Benutzerordner des lokalen Windows-Rechners wird im linken Bereich angezeigt, und der Benutzer-Home-Ordner des in AWS laufenden Linux wird im rechten Bereich angezeigt. Sie können Dateien von einem Bereich in den anderen ziehen und ablegen sowie Dateien auf den lokalen und den Remote-Maschinen kopieren, umbenennen oder löschen. 
Verbindung zu AWS über SSH von Linux
Anders als bei Windows verfügt Linux über einen nativen SSH-Client. In der Konsole deiner lokalen Linux-Maschine verwendest du folgenden Befehl, um über SSH eine Verbindung zu AWS EC2-Instanzen herzustellen, die Linux ausführen:
ssh -i file_name.pem ubuntu@ip_address
Gehe in das Verzeichnis, in dem sich deine private Schlüssel .pem Datei auf einer Linux-Maschine befindet. In diesem Beispiel verwende ich Ubuntu und habe die blog01-key.pem Datei in ~/Downloads/ heruntergeladen.
cd ~/Downloads/
ssh -i blog01-key.pem ubuntu@52.55.222.44
Dabei ist ubuntu der Benutzername auf der entfernten Linux-Maschine und 52.55.222.44 die IP-Adresse der entfernten Linux-Maschine.
Wenn du diesen Befehl jetzt ausführst, erhältst du den Fehler:
Warnung: Ungeschützte private Schlüsseldatei.
Die Berechtigungen für ‚blog01-key.pem‘ sind zu offen.
Es wird gefordert, dass dein privater Schlüssel nicht für andere zugänglich ist.
Dieser private Schlüssel wird ignoriert. Schlüssel laden: Berechtigung fällt aus.
Erlaubnis verweigert (öffentlicher Schlüssel).
Du musst aus Sicherheitsgründen strengere Berechtigungen festlegen.
chmod 400 ./blog-key.pem
Verwende 400 , wenn die Schlüssel nur lesbar für dich sein sollen.
Verwende 600 , wenn du die Schlüssel lesen und schreiben musst.
Jetzt kannst du mit dem Befehl eine SSH-Verbindung zu AWS EC2-Instanzen von deiner Linux-Maschine herstellen:
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 in Linux
Du kannst auch Dateien über SSH zu AWS-Instanzen übertragen, indem du SCP in Linux verwendest. Stelle sicher, dass du bereits eine AWS SSH-Verbindung zur entfernten Linux-Instanz von deiner lokalen Linux-Maschine hergestellt hast. Öffne dann eine neue Konsole auf deiner lokalen Linux-Maschine und verbinde dich mit der EC2-Instanz mit folgendem Befehl:
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 Befehl:
scp -i ~/Downloads/blog01-key.pem ~/Downloads/file.txt ubuntu@52.55.222.44:/home/ubuntu
Die Übertragung von Dateien über SSH zur AWS-Instanz wurde erfolgreich abgeschlossen.
Um eine Datei in die umgekehrte Richtung zu kopieren (von Linux in AWS EC2 auf deine lokale Linux-Maschine), verwende 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 du im Screenshot sehen kannst, wurde die Datei erfolgreich kopiert. Du kannst wichtige Dateien von einer Amazon EC2-Instanz auf den benötigten lokalen Computer kopieren und die Dateien sichern. Führe AWS EC2-Backup regelmäßig aus, um Datenverlust zu vermeiden.
So fügen Sie einem AWS-Instanzschlüssel einen neuen Schlüssel hinzu
Sie können ein zusätzliches Schlüsselpaar für eine vorhandene EC2-Instanz erstellen, um sich nach der Erstellung der AWS EC2-Instanz über SSH mit AWS-Instanzen zu verbinden. Möglicherweise müssen Sie dies tun, um anderen Benutzern SSH-Zugriff auf die EC2-Instanz zu gewähren. Wenn Sie der Meinung sind, dass der Benutzer keine Verbindung mehr über SSH zu AWS-Instanzen benötigt, können Sie den öffentlichen Schlüssel von der auf AWS EC2 laufenden Linux-Maschine löschen, ohne einen neuen Schlüssel im Moment der Instanzerstellung zu generieren.
Öffnen Sie die EC2-Verwaltungskonsole in der AWS-Verwaltungskonsole.
Gehen Sie zu Network & Security im Navigationsbereich und klicken Sie auf Key Pairs.
Alle vorhandenen Schlüsselpaare werden auf dieser Seite angezeigt. Sie können einen Teil des Namens eines vorhandenen Schlüsselpaares in das Suchfeld eingeben, um das Schlüsselpaar zu finden.
Klicken Sie auf die Create key pair Schaltfläche 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 in Linux mit OpenSSH verwenden müssen, oder wählen Sie .ppk, wenn Sie den Schlüssel in Windows mit PuTTY verwenden müssen. Da ich eine lokale Linux-Maschine benutze, um über SSH mit neuen Schlüsseln auf AWS EC2-Instanzen zuzugreifen, wähle ich die .pem Schlüsseloption aus. Sie können bei Bedarf Tags hinzufügen. Drücken Sie Create key pair, wenn Sie bereit sind, fortzufahren.
Speichern Sie die heruntergeladene Datei an einem sicheren Ort. Mein heruntergeladener Dateiname lautet blog02-temp.pem und ich speichere diese Datei im Downloads -Verzeichnis im Heimbenutzerverzeichnis.
Abrufen eines öffentlichen Schlüssels aus dem neuen Schlüsselpaar
Wir haben ein neues Schlüsselpaar in der Weboberfläche der AWS-Verwaltungskonsole generiert. Nun müssen wir einen öffentlichen Schlüssel mit einem privaten Schlüssel aus der heruntergeladenen .pem Datei generieren.
Verwenden Sie den Befehl in diesem Format:
ssh-keygen -y -f /path_to_key_pair/my-key-pair.pem
In meinem Fall ist der Befehl:
ssh-keygen -y -f ~/Downloads/blog02-temp.pem
Wenn Sie einen Fehler erhalten, setzen Sie die richtigen Berechtigungen:
chmod 400 ~/Downloads/blog02-temp.pem
Wenn alles korrekt ist, wird der generierte öffentliche Schlüssel in der Konsolenausgabe angezeigt.
Kopieren Sie den generierten Schlüsselstring und speichern Sie diese Information an einem sicheren Ort. In diesem Beispiel speichere ich den Schlüsselstring in einer Textdatei.
Kopieren Sie den Schlüsselstring in die Zwischenablage.
Verbinden Sie sich gemäß der oben in diesem Beitrag erklärten Methode über SSH mit EC2-Instanzen von Ihrer lokalen Linux-Maschine aus.
Wir befinden uns jetzt in /home/Ubuntu/.
Öffnen Sie die Konfigurationsdatei, in der die öffentlichen Schlüssel zum Zugriff auf die EC2-Instanz über SSH gespeichert sind, mit einem Texteditor: nano ~/.ssh/authorized_keys
Der vollständige Pfad zu dieser Konfigurationsdatei hängt von dem Linux Amazon Machine Image (AMI) ab und kann sein:
/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 das Konsolenfenster (Terminal) mit der aktuellen SSH-Sitzung, die Sie für die Verbindung zur EC2-Instanz verwenden, nicht, bis Sie sicherstellen, dass der zweite hinzugefügte Schlüssel funktioniert. Andernfalls können Sie die SSH-Verbindung verlieren, wenn die Konfiguration falsch ist, und Sie haben keine Möglichkeit, sich erneut über SSH mit den AWS-Instanzen zu verbinden. Sperren Sie sich im Falle eines Fehlers nicht selbst aus!
Öffnen Sie ein weiteres Terminal auf Ihrem lokalen Linux-Rechner und versuchen Sie, mit dem neuen Schlüssel eine Verbindung zur Instanz herzustellen. Ich gehe zu dem Verzeichnis, in dem sich meine .pem Schlüsseldateien befinden.
cd ~/Downloads/
Verbinden Sie sich mit der EC2-Instanz, die unter Linux bei AWS ausgeführt wird, von Ihrem lokalen Linux-Gerät im neuen Konsolenfenster, indem Sie den neuen privaten Schlüssel ( blog02-temp.pem in diesem Fall) definieren.
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 eine AWS SSH-Verbindung herstellen muss. Wenn Sie den SSH-Zugang zu dieser AWS EC2-Instanz für den Benutzer deaktivieren müssen, löschen Sie die zweite Zeile aus .ssh/authorized_keys auf Ihrer Remote-Linux-Instanz, die auf AWS EC2 läuft. Da die AWS SSH-Konfiguration mit beiden Schlüsseln (der erste Schlüssel, der bei der Erstellung der EC2-Instanz generiert wurde, und der zweite Schlüssel, den Sie zuvor für einen anderen Benutzer erstellt haben, um eine Verbindung zu AWS EC2 herzustellen) gut funktioniert, können Sie die SSH-Terminalfenster schließen .
Wenn Sie ein Schlüsselpaar in Network & Security > Key pairs aus der EC2 Management Console löschen (der Ort, an dem wir den zweiten Schlüssel in der Webschnittstelle der AWS Management Console erstellt haben), werden die Schlüssel innerhalb der jeweiligen EC2-Instanz nicht gelöscht.
Was tun, wenn Sie den AWS EC2 SSH-Schlüssel verlieren
Wenn Sie den privaten Schlüssel für die Verbindung zu einer AWS EC2-Instanz verlieren (der bei der Erstellung einer neuen EC2-Instanz generiert wurde), können Sie nicht mehr mit der entsprechenden Instanz verbinden . Sie können keinen neuen Schlüssel generieren und den neuen Schlüssel in die AWS SSH-Konfigurationsdatei in der aktuellen EC2-Instanz einfügen . In dieser Situation können Sie eine temporäre EC2-Instanz verwenden, zu der Sie SSH-Zugang haben. Versuchen Sie, den folgenden Workflow zu verwenden, um den AWS EC2 SSH-Zugriff auf die Instanz wiederherzustellen.
- Stoppen Sie die ursprüngliche EC2-Instanz, der AWS SSH-Privatschlüssel, den Sie verloren haben.
- Überprüfen Sie Informationen über EBS-Volumes, die an die EC2-Instanz angehängt sind. Sie müssen das EBS-Volume identifizieren, das das Root-/Volume enthält, das auf Linux gemountet ist. Notieren Sie die Volume-ID dieses EBS-Volumes.
- Starten Sie eine temporäre Instanz in AWS EC2. Sie können die Instanz verwenden, die dieselbe Linux-Distribution wie auf der ursprünglichen Maschine installiert hat (das AMI desselben Typs).
- Generieren Sie ein neues Schlüsselpaar, indem Sie sich im AWS Management Console mit AWS verbinden. Speichern Sie den privaten Schlüssel und bereiten Sie den öffentlichen Schlüssel vor. Sie müssen den Schlüsselstring des öffentlichen Schlüssels generieren, um die AWS SSH-Konfiguration zu reparieren, die auf dem Root-Volume der ursprünglichen Instanz gespeichert ist.
- Erstellen Sie ein Verzeichnis in Linux, das auf der temporären EC2-Instanz läuft und mounten Sie das EBS-Volume, das die Root-/Partition der ursprünglichen EC2-Instanz enthält, an die temporäre EC2-Instanz. Finden Sie das benötigte EBS-Volume anhand der zuvor notierten Volume-ID.
- Öffnen Sie die AWS SSH-Schlüsselkonfigurationsdatei (die in einem Verzeichnis wie /home/Ubuntu/.ssh/authorized_keys aufbewahrt wurde). Der Pfad ändert sich je nach dem Verzeichnis, in das Sie die Root-Partition der ursprünglichen EC2-Instanz gemountet haben. Fügen Sie den Schlüsselstring 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, ab.
- Mounten Sie das EBS-Volume mit der bearbeiteten AWS SSH-Schlüsselkonfigurationsdatei zurück auf die ursprüngliche EC2-Instanz.
- Schalten Sie die ursprüngliche EC2-Instanz ein und verbinden Sie sich mit dieser Instanz über das neue Schlüsselpaar via SSH.
Mit EC2 Instance Connect
Das Schlüsselmanagement ist ein wichtiger Teil der AWS-Verwaltung, weil Sie die AWS EC2 SSH-Schlüssel zum Zugriff auf EC2-Instanzen sicher aufbewahren müssen und vermeiden sollten, sie zu verlieren. Schlüssel zu erstellen und zu löschen, die für den vorübergehenden Zugriff anderer Benutzer benötigt werden, kann eine Routineaufgabe mit einer großen Anzahl von Benutzern sein. Aus diesem Grund bietet Amazon die Möglichkeit, sich über EC2 Instance Connect via SSH mit AWS EC2-Instanzen zu verbinden. Diese Funktion ermöglicht es Ihnen, das Management von SSH-Schlüsseln zur Verbindung mit AWS-Instanzen zu automatisieren. Die Verwendung von EC2 Instance Connect beruht darauf, dass Sie Identitäts- und Zugriffsmanagement-Richtlinien erstellen, um den AWS SSH-Zugriff auf EC2-Instanzen zentral zu steuern, ohne die Notwendigkeit, 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 die Amazon EC2 Instance Connect CLI verwenden, um sich mit AWS EC2-Instanzen zu verbinden.
Die Amazon Instance Connect API überträgt einen einmalig verwendbaren öffentlichen SSH-Schlüssel für 60 Sekunden an die Instanz-Metadaten. 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 wird für EC2-Instanzen unterstützt, 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 der Remote-Linux-Maschine, die in AWS ausgeführt wird.
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 aus EC2-Instanz-Metadaten zu lesen. Wenn benutzerdefinierte Werte bereits für diese Parameter eingegeben wurden, aktualisiert (überschreibt) Instance Connect diese nicht, aber die Funktion kann in diesem Fall nicht genutzt werden.
Sie müssen eine Konfigurationsdatei im JSON-Format erstellen. Öffnen IAM-Konsole, gehen Sie dann zu Richtlinien und klicken Sie auf Richtlinie erstellen. Alternativ können Sie die Befehlszeile auf Ihrer Linux-Maschine mit installierter AWS CLI verwenden. Das unten angezeigte Konfigurationsbeispiel identifiziert Instanzen anhand der Instanz-ID zur Zugangsfreigabe.
{
"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": "*"
}
]
}
Dann muss die Richtlinie aktiviert werden. Der AWS CLI-Befehl zur Aktivierung der Richtlinie sieht 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 zuordnen.
aws iam attach-user-policy --policy-arn arn:aws:iam::account-id:policy/my-policy --user-name IAM-friendly-name
Um sich mit der EC2-Instanz in Amazon EC2-Konsole zu verbinden, wählen Sie die benötigte EC2-Instanz aus und klicken Sie auf den Connect-Button. Auf der Mit Instanz verbinden -Seite, wählen Sie die EC2 Instance Connect tab und klicken Sie auf Connect.
Fazit
Die Verbindung zu AWS EC2-Instanzen über SSH ist ein wichtiger Teil des Verwaltungsvorgangs von AWS EC2. Dieser Blogbeitrag erklärte, wie eine AWS EC2 SSH-Konfiguration erstellt wird und wie man sich von lokalen Linux- und Windows-Geräten aus mit AWS EC2-Instanzen verbinden kann. Zum Aufbau einer SSH-Verbindung mit EC2-Instanzen müssen Schlüsselpaare verwendet werden. Ein öffentlicher Schlüssel wird in der Konfiguration des auf AWS EC2 laufenden Linux-Systems gespeichert, während ein privater Schlüssel von einem lokalen SSH-Client verwendet wird, der auf dem Rechner des Benutzers installiert ist. Behalten Sie die Schlüssel an einem sicheren Ort und erstellen Sie regelmäßig Backups, um Datenverluste, Zeitverlust und Kosten zu vermeiden.





























