Verwenden von SSH-Schlüsseln mit Windows in Azure

Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen

Dieser Artikel richtet sich an Windows-Benutzer, die SSH-Schlüssel (Secure Shell) erstellen und verwenden möchten, um eine Verbindung mit virtuellen Linux-Computern (VMs) in Azure herzustellen. Sie können auch SSH-Schlüssel im Azure-Portal generieren und speichern, die dann beim Erstellen von VMs im Portal verwendet werden.

Informationen zum Verwenden von SSH-Schlüsseln von einem Linux- oder macOS-Client finden Sie in der Kurzanleitung. Eine umfassendere Übersicht über SSH finden Sie unter Ausführliche Schritte: Erstellen und Verwalten von SSH-Schlüsseln für die Authentifizierung bei einer Linux-VM in Azure.

Übersicht über SSH und Schlüssel

SSH ist ein Protokoll für verschlüsselte Verbindungen, das die sichere Anmeldung über ungesicherte Verbindungen ermöglicht. SSH ist das Standardverbindungsprotokoll für in Azure gehostete virtuelle Linux-Computer. SSH stellt zwar bereits eine verschlüsselte Verbindung bereit, bei Verwendung von Kennwörtern für SSH ist der virtuelle Computer jedoch weiterhin anfällig für Brute-Force-Angriffe. Es wird empfohlen, eine Verbindung mit einem virtuellen Computer über SSH mithilfe eines Schlüsselpaars aus öffentlichem und privatem Schlüssel (auch SSH-Schlüssel genannt) herzustellen.

Das Paar aus einem öffentlichen und einem privaten Schlüssel ähnelt dem Schloss an Ihrer Haustür. Das Schloss ist öffentlich zugänglich, und jede Person mit dem richtigen Schlüssel kann die Tür öffnen. Der Schlüssel ist privat und wird nur an Personen weitergegeben, denen Sie vertrauen, da hiermit die Tür aufgeschlossen werden kann.

  • Beim Erstellen Ihrer Linux-VM wird der öffentliche Schlüssel auf der VM platziert.

  • Der private Schlüssel bleibt auf dem lokalen System. Bewahren Sie diesen privaten Schlüssel sicher auf. Teilen Sie ihn nicht.

Wenn Sie eine Verbindung mit Ihrer Linux-VM herstellen, testet die VM den SSH-Client, um sicherzustellen, dass er über den richtigen privaten Schlüssel verfügt. Wenn der Client über den privaten Schlüssel verfügt, erhält er Zugriff auf den virtuellen Computer.

Abhängig von den Sicherheitsrichtlinien in Ihrer Organisation können Sie ein einzelnes Schlüsselpaar für den Zugriff auf mehrere Azure-VMs und -Dienste verwenden. Sie benötigen nicht für jeden virtuellen Computer ein separates Schlüsselpaar.

Sie können Ihren öffentlichen Schlüssel beliebig weitergeben, aber auf Ihren privaten Schlüssel können nur Sie (bzw. Ihre lokale Sicherheitsinfrastruktur) zugreifen.

Unterstützte SSH-Schlüsselformate

Azure unterstützt zurzeit Paare aus öffentlichen/privaten Schlüsseln für SSH-Protokoll 2 (SSH-2) RSA, die eine Mindestlänge von 2048 Bits aufweisen. Andere Schlüsselformate wie z.B. ED25519 und ECDSA werden nicht unterstützt.

SSH-Clients

Neuere Versionen von Windows 10 enthalten OpenSSH-Clientbefehle zum Erstellen und Verwenden von SSH-Schlüsseln und SSH-Verbindungen über PowerShell oder eine Eingabeaufforderung.

Sie können auch Bash in Azure Cloud Shell verwenden, um eine Verbindung mit Ihrer VM herzustellen. Sie können Cloud Shell in einem Webbrowser, über das Azure-Portal oder mithilfe der Azure-Kontoerweiterung als Terminal in Visual Studio Code verwenden.

Sie können auch das Windows-Subsystem für Linux installieren, um über SSH eine Verbindung mit Ihrer VM herzustellen und andere native Linux-Tools in einer Bash-Shell zu verwenden.

Erstellen eines SSH-Schlüsselpaars

Die einfachste Möglichkeit zum Erstellen und Verwalten Ihrer SSH-Schlüssel besteht in der Verwendung des Portals zum Erstellen und Speichern zur Wiederverwendung.

Sie können auch Schlüsselpaare mit dem Azure CLI über den Befehl az sshkey create erstellen, wie unter Generieren und Speichern von SSH-Schlüsseln beschrieben.

Geben Sie folgenden Befehl ein, um ein SSH-Schlüsselpaar auf Ihrem lokalen Computer mithilfe des Befehls ssh-keygen von PowerShell oder einer Eingabeaufforderung zu erstellen:

ssh-keygen -m PEM -t rsa -b 2048

Geben Sie einen Dateinamen ein, oder verwenden Sie den in Klammern angegebenen Standardwert (z. B. C:\Users\username/.ssh/id_rsa). Geben Sie eine Passphrase für die Datei ein, oder lassen Sie sie leer, wenn Sie keine Passphrase verwenden möchten.

Erstellen einer VM mithilfe des Schlüssels

Um eine Linux-VM zu erstellen, die SSH-Schlüssel zur Authentifizierung verwendet, geben Sie Ihren öffentlichen SSH-Schlüssel beim Erstellen der VM an.

Bei Verwendung der Azure CLI geben Sie den Pfad und den Dateinamen für den öffentlichen Schlüssel mithilfe von az vm create und dem Parameter --ssh-key-value an.

az vm create \
   --resource-group myResourceGroup \
   --name myVM \
   --image Ubuntu2204\
   --admin-username azureuser \
   --ssh-key-value ~/.ssh/id_rsa.pub

Bei PowerShell verwenden Sie New-AzVM und fügen den SSH-Schlüssel der VM-Konfiguration hinzu. Ein Beispiel finden Sie unter Schnellstart: Erstellen einer Linux-VM mit PowerShell in Azure.

Wenn Sie eine große Anzahl von Bereitstellungen über das Portal vornehmen, können Sie Ihren öffentlichen Schlüssel in Azure hochladen, wo er dann beim Erstellen eines virtuellen Computers über das Portal problemlos ausgewählt werden kann. Weitere Informationen finden Sie unter Hochladen eines SSH-Schlüssels.

Herstellen einer Verbindung mit Ihrer VM

Stellen Sie mit dem auf Ihrer Azure-VM bereitgestellten öffentlichen Schlüssel und dem privaten Schlüssel auf Ihrem lokalen System mithilfe der IP-Adresse oder dem DNS-Namen Ihres virtuellen Computers eine SSH-Verbindung mit Ihrem virtuellen Computer her. Ersetzen Sie azureuser und 10.111.12.123 im folgenden Befehl durch den Benutzernamen des Administrators, die IP-Adresse (oder den vollständig qualifizierten Domänennamen) und den Pfad zu Ihrem privaten Schlüssel:

ssh -i ~/.ssh/id_rsa azureuser@10.111.12.123

Wenn Sie noch nie eine Verbindung mit diesem virtuellen Computer hergestellt haben, werden Sie aufgefordert, den Fingerabdruck des Hosts zu überprüfen. Es ist verlockend, den vorgelegten Fingerabdruck einfach zu akzeptieren, doch damit setzen Sie sich einem möglichen „Person-in-the-Middle“-Angriff aus. Sie sollten den Fingerabdruck des Hosts immer überprüfen. Dies ist nur erforderlich, wenn Sie zum ersten Mal von einem Client aus eine Verbindung herstellen. Um den Fingerabdruck des Hosts über das Portal abzurufen, verwenden Sie den Befehl „Ausführen“ mit dem folgenden Befehl wie folgt: ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'.

Screenshot: Verwenden der Skriptausführung zum Überprüfen des Hostfingerabdrucks

Verwenden Sie den az vm run-command invoke-Befehl, um den Befehl mithilfe der CLI auszuführen.

Falls Sie beim Erstellen des Schlüsselpaars eine Passphrase konfiguriert haben, müssen Sie diese bei Aufforderung eingeben.

Wenn der virtuelle Computer die JIT-Zugriffsrichtlinie (Just-In-Time) verwendet, müssen Sie den Zugriff anfordern, bevor Sie eine Verbindung mit dem virtuellen Computer herstellen können. Weitere Informationen zur Just-In-Time-Richtlinie finden Sie unter Verwalten des Zugriffs auf virtuelle Computer mithilfe der Just-In-Time-Richtlinie.

Nächste Schritte