Blog
So starten Sie eine RDP-Sitzung von der Befehlszeile aus zu einem Windows-Server, der auf AWS läuft

Das Starten einer RDP-Sitzung zu einem Windows-Server auf AWS ist eine sehr arbeitsintensive Aufgabe. Sie müssen
die Instanz auf der Konsole auswählen, den privaten Schlüssel kopieren, um das Passwort zu erhalten, das Passwort kopieren,
die RDP-Datei herunterladen. Dann doppelklicken Sie auf die RDP-Datei, fügen das Kennwort in ein Dialogfeld ein und
schon sind Sie fertig. Aber es muss nicht so sein. In diesem Blog zeigen wir Ihnen, dass es so einfach sein kann wie die Verwendung von ssh!
vorbereiten.
Um einen schnellen und einfachen Zugriff zu ermöglichen, müssen Sie die folgenden drei Dinge vorbereiten.
- freeRDP auf Ihrem Rechner installieren
- XQuartz auf MacOS installieren
- das private Schlüsselmaterial des EC2-Schlüsselpaars im SSM-Parameterspeicher speichern
Die ersten beiden Schritte sind einfach und werden hier nicht weiter erläutert. Um das private Schlüsselmaterial
des EC2-Schlüsselpaars im SSM-Parameterspeicher zu speichern, verwenden wir die folgende CloudFormation-Ressource:
KeyPair:
Type: AWS::EC2::KeyPair
Properties:
KeyName: WindowsServer
KeyType: rsa
Sobald Sie diese Ressource bereitstellen, wird der private Schlüssel des Schlüsselpaares mit dem Namen WindowsServer im Parameterspeicher
unter dem Namen /ec2/keypair/<key-id> gespeichert. Das ist gut, denn so wird der Name des SSM-Parameters
mit dem Material des privaten Schlüssels vereinheitlicht.
Starten Sie die rdp-Sitzung
Jetzt haben wir alles, um den Start einer RDP-Sitzung zu automatisieren, indem wir die folgenden Schritte ausführen.
- die zu verbindende ec2-Instanz bestimmen
- den privaten Schlüssel des Schlüsselpaares abrufen
- das Admin-Kennwort des Windows-Servers abfragen
- Starten Sie die RDP-Sitzung o/
Bestimmen Sie die ec2-Instanz, mit der Sie sich verbinden möchten
Zunächst ermitteln wir die EC2-Instanz-ID des Rechners, mit dem wir uns verbinden möchten. Im folgenden Schnipsel gehen wir davon aus, dass Sie einen einzelnen Rechner mit dem Namen tagged haben.
instance_name=mydemo
instance_id=$(aws ec2 describe-instances
--query 'join(n, Reservations[].Instances[].InstanceId)'
--output text
--filter "Name=tag:Name,Values=$instance_name"
"Name=instance-state-name,Value=running")
den privaten Schlüssel des Schlüsselpaares abrufen
Um den privaten Schlüssel des Schlüsselpaars abzurufen, rufen wir zunächst den Namen des Schlüsselpaars ab, das
mit der Instanz verknüpft ist, und rufen die Schlüssel-ID ab.
key_name=$(aws ec2 describe-instances
--instance-id $instance_id
--query Reservations[0].Instances[0].KeyName
--output text)
key_id=$(aws ec2 describe-key-pairs
--key-names $key_name
--query KeyPairs[0].KeyPairId
--output text)
Jetzt können wir das Material für den privaten Schlüssel einlesen:
private_key=$(mktemp)
chmod 0600 $private_key
aws ssm get-parameter --name /ec2/keypair/$key_id
--with-decryption --query Parameter.Value
--output text > $private_key
das Admin-Kennwort des Windows-Servers abfragen
Um das Admin-Passwort des Windows-Servers abzurufen, rufen wir get-password-data mit dem privaten Schlüssel auf.
password=$(aws ec2 get-password-data
--priv-launch-key $private_key --instance-id $instance_id
--query PasswordData
--output text)
rm -f $private_key
Starten Sie die rdp-Sitzung
Endlich haben wir alles, um uns automatisch über RDP anzumelden. Wir müssen nur noch eine IP-Adresse auswählen und FreeRDP starten!
ip_address=$(aws ec2 describe-instances
--instance-ids $instance_id
--query 'join(n, Reservations[].Instances[].PublicIpAddress)'
--output text)
xfreerdp /u:administrator /p:$password /v:$ip_address /cert:ignore
Das war's auch schon! Es ist genauso einfach wie das Ausführen von ssh :-p Sie finden
das vollständige Skript auf github.
Sie können es nach Belieben anpassen.
Warum freeRDP und nicht der Remote Desktop Client von Microsoft
Sie fragen sich vielleicht: Warum verwenden Sie nicht den Remote Desktop Client von Microsoft?
Das ist ganz einfach: Er unterstützt keine Befehlszeilenoptionen. Die Alternative wäre,
die RDP-Datei zu generieren, aber auf Nicht-Windows-Plattformen können Sie das Passwort nicht speichern, da die
erforderliche Verschlüsselungsfunktion nur unter Windows funktioniert.
Fazit
Mit dem freeRDP-Client können Sie den Start einer RDP-Sitzung zu einem Windows Server, auf dem
auf AWS läuft, vollständig automatisieren!
Bild von ArtificialOG aus Pixabay
Verfasst von

Mark van Holsteijn
Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.
Unsere Ideen
Weitere Blogs
Contact



