Verwalten von SSH für den sicheren Zugriff auf AKS-Knoten (Azure Kubernetes Service)
In diesem Artikel wird beschrieben, wie Sie SSH-Schlüssel (Vorschau) in Ihren AKS-Clustern oder Knotenpools während der ersten Bereitstellung oder zu einem späteren Zeitpunkt konfigurieren.
AKS unterstützt die folgenden Konfigurationsoptionen zum Verwalten von SSH-Schlüsseln auf Clusterknoten:
- Erstellen eines Clusters mit SSH-Schlüsseln
- Aktualisieren des SSH-Schlüssels in einem vorhandenen AKS-Cluster
- Deaktivieren und Aktivieren des SSH-Diensts
Wichtig
AKS-Previewfunktionen stehen gemäß dem Self-Service- und Aktivierungsprinzip zur Verfügung. Vorschauversionen werden „wie besehen“ und „wie verfügbar“ bereitgestellt und sind von Service Level Agreements und der Herstellergarantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:
Voraussetzungen
- Sie benötigen
aks-preview
Version 0.5.116 oder höher, um Update verwenden zu können. - Sie benötigen
aks-preview
Version 1.0.0b6 oder höher, um Disable verwenden zu können. - Die SSH-Features Create undUpdate unterstützen Linux-, Windows- und Azure Linux-Knotenpools auf vorhandenen Clustern.
- Das SSH-Feature Disable wird in dieser Vorschauversion in Knotenpools, die das Windows Server-Betriebssystem ausführen, nicht unterstützt.
Installieren der Azure CLI-Erweiterung aks-preview
Installieren Sie die Erweiterung „aks-preview“ mithilfe des Befehls
az extension add
.az extension add --name aks-preview
Führen Sie mit dem Befehl
az extension update
ein Update auf die neueste Version der Erweiterung aus.az extension update --name aks-preview
Registrieren des DisableSSHPreview
-Featureflags
Um das SSH-Feature Disable verwenden zu können, führen Sie die folgenden Schritte aus, um es in Ihrem Abonnement zu registrieren und zu aktivieren.
Registrieren Sie das Featureflag
DisableSSHPreview
mithilfe des Befehlsaz feature register
.az feature register --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
Es dauert einige Minuten, bis der Status Registered (Registriert) angezeigt wird.
Überprüfen Sie den Registrierungsstatus mithilfe des Befehls
az feature show
.az feature show --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
Wenn der Zustand Registered (Registriert) lautet, aktualisieren Sie die Registrierung des Ressourcenanbieters Microsoft.ContainerService mithilfe des Befehls
az provider register
.az provider register --namespace Microsoft.ContainerService
Erstellen eines AKS-Clusters mit SSH-Schlüsseln
Verwenden Sie den Befehl az aks create zum Bereitstellen eines AKS-Clusters mit einem öffentlichen SSH-Schlüssel. Sie können entweder den Schlüssel oder eine Schlüsseldatei mit dem Argument --ssh-key-value
angeben.
SSH-Parameter | Beschreibung | Standardwert |
---|---|---|
--generate-ssh-key |
Wenn Sie keine eigenen SSH-Schlüssel haben, geben Sie --generate-ssh-key an. Die Azure CLI generiert automatisch eine Reihe von SSH-Schlüsseln und speichert sie im Standardverzeichnis ~/.ssh/ . |
|
--ssh-key-value | Öffentlicher Schlüsselpfad oder Schlüsselinhalt zur Installation auf Knoten-VMs für den SSH-Zugriff. Beispiel: ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm . |
~/.ssh/id_rsa.pub |
--no-ssh-key |
Wenn Sie keine SSH-Schlüssel benötigen, geben Sie dieses Argument an. AKS generiert jedoch automatisch eine Reihe von SSH-Schlüsseln, da die Azure Virtual Machine-Ressourcenabhängigkeit keine leere SSH-Schlüsseldatei unterstützt. Daher werden die Schlüssel nicht zurückgegeben und können nicht für SSH in den Knoten-VMs verwendet werden. Der private Schlüssel wird verworfen und nicht gespeichert. |
Hinweis
Wenn keine Parameter angegeben sind, verweist die Azure CLI standardmäßig auf die in der Datei ~/.ssh/id_rsa.pub
gespeicherten SSH-Schlüssel. Wenn die Schlüssel nicht gefunden werden, gibt der Befehl die Nachricht An RSA key file or key value must be supplied to SSH Key Value
zurück.
Hier einige Beispiele für diesen Befehl:
So erstellen Sie einen Cluster und verwenden die standardmäßig generierten SSH-Schlüssel:
az aks create --name myAKSCluster --resource-group MyResourceGroup --generate-ssh-key
Um eine SSH-Datei für öffentliche Schlüssel anzugeben, schließen Sie das Argument
--ssh-key-value
ein:az aks create --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
Aktualisieren des SSH-Schlüssels in einem vorhandenen AKS-Cluster
Verwenden Sie den Befehl az aks update
, um den öffentlichen SSH-Schlüssel (Vorschau) in Ihrem Cluster zu aktualisieren. Bei diesem Vorgang wird der Schlüssel in allen Knotenpools aktualisiert. Sie können entweder einen Schlüssel oder eine Schlüsseldatei mit dem Argument --ssh-key-value
angeben.
Hinweis
Das Aktualisieren der SSH-Schlüssel wird für Azure-VM-Skalierungsgruppen mit AKS-Clustern unterstützt.
Hier einige Beispiele für diesen Befehl:
Um einen neuen Wert für einen öffentlichen SSH-Schlüssel anzugeben, fügen Sie das
--ssh-key-value
-Argument ein:az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'
Um eine Datei mit dem öffentlichen SSH-Schlüssel anzugeben, verwenden Sie das Argument
--ssh-key-value
:az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
Wichtig
Nachdem Sie den SSH-Schlüssel aktualisieren, führt AKS kein automatisches Update des Knotenpools durch. Sie können jederzeit einen Updatevorgang für den Knotenpool ausführen. Der Vorgang der Aktualisierung der SSH-Schlüssel wird wirksam, nachdem eine Aktualisierung des Knotenimages abgeschlossen ist.
Deaktivieren von SSH – Übersicht
Um die Sicherheit zu verbessern und Ihre Unternehmenssicherheitsanforderungen oder -strategie zu unterstützen, wird das Deaktivieren von SSH (Vorschau) von AKS sowohl auf Cluster- als auch auf Knotenpoolebene unterstützt. Die Deaktivierung von SSH bietet einen vereinfachten Ansatz im Vergleich zu der einzigen unterstützten Lösung ein, die die Konfiguration von Netzwerksicherheitsgruppenregeln auf der AKS-Subnetz-/Knoten-Netzwerkschnittstellenkarte (NIC) erfordert. SSH deaktivieren unterstützt nur Knotenpools von VM Scale Sets
Wenn Sie SSH bei der Erstellung des Clusters deaktivieren, wird dies nach der Erstellung des Clusters wirksam. Wenn Sie SSH jedoch in einem vorhandenen Cluster- oder Knotenpool deaktivieren, deaktiviert AKS SSH nicht automatisch. Sie können jederzeit einen Updatevorgang für den Knotenpool ausführen. Der Vorgang zum Deaktivieren/Aktivieren von SSH-Schlüsseln wird wirksam, nachdem die Aktualisierung des Knotenimages abgeschlossen worden ist.
Hinweis
Wenn Sie SSH auf Clusterebene deaktivieren, gilt dies für alle vorhandenen Knotenpools. Bei allen Knotenpools, die nach diesem Vorgang erstellt werden, ist SSH standardmäßig aktiviert, und Sie müssen diese Befehle erneut ausführen, um sie zu deaktivieren.
SSH-Parameter | Beschreibung |
---|---|
disabled |
Der SSH-Dienst wird deaktiviert. |
localuser |
Der SSH-Dienst wird aktiviert, und Benutzer oder Benutzerinnen mit SSH-Schlüsseln können sicher auf den Knoten zugreifen. |
Hinweis
Der kubectl-Debugknoten funktioniert nach der Deaktivierung von SSH weiterhin, weil er nicht vom SSH-Dienst abhängt.
Deaktivieren von SSH in einer neuen Clusterbereitstellung
Standardmäßig ist der SSH-Dienst auf AKS-Clusterknoten für alle Benutzer und Benutzerinnen sowie Pods geöffnet, die auf dem Cluster ausgeführt werden. Sie können den direkten SSH-Zugriff von einem beliebigen Netzwerk auf Clusterknoten verhindern, um den Angriffsvektor zu begrenzen, wenn ein Container in einem Pod kompromittiert wird.
Verwenden Sie den Befehl az aks create
, um einen neuen Cluster zu erstellen, und geben Sie das Argument --ssh-access disabled
an, um SSH (Vorschau) während der Clustererstellung für alle Knotenpools zu deaktivieren.
Wichtig
Nachdem Sie den SSH-Dienst deaktiviert haben, können Sie keine SSH-Verbindung mit dem Cluster herstellen, um administrative Aufgaben durchzuführen oder Probleme zu behandeln.
Hinweis
Bei einem neu erstellten Cluster konfiguriert ssh nur den ersten Systemknotenpool. Alle anderen Knotenpools müssen auf Knotenpoolebene konfiguriert werden.
az aks create --resource-group myResourceGroup --name myManagedCluster --ssh-access disabled
Nach wenigen Minuten ist die Ausführung des Befehls abgeschlossen, und es werden Informationen zum Cluster im JSON-Format zurückgegeben. Das folgende Beispiel zeigt die Ausgabe und die Ergebnisse im Zusammenhang mit der Deaktivierung von SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Deaktivieren von SSH in einem vorhandenen Cluster
Verwenden Sie den Befehl az aks update
, um einen vorhandenen Cluster zu aktualisieren, und geben Sie das Argument --ssh-access disabled
an, um SSH (Vorschau) für alle Knotenpools im Cluster zu deaktivieren.
az aks update --resource-group myResourceGroup --name myManagedCluster --ssh-access disabled
Nach wenigen Minuten ist die Ausführung des Befehls abgeschlossen, und es werden Informationen zum Cluster im JSON-Format zurückgegeben. Das folgende Beispiel zeigt die Ausgabe und die Ergebnisse im Zusammenhang mit der Deaktivierung von SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Damit die Änderung wirksam wird, müssen Sie mithilfe des Befehls az aks nodepool upgrade
für alle Knotenpools ein Reimaging durchführen.
az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only
Wichtig
Während dieses Vorgangs werden alle Instanzen der VM-Skalierungsgruppe aktualisiert und das Image für die Verwendung der neuen SSH-Konfiguration neu erstellt.
Deaktivieren von SSH für einen neuen Knotenpool
Verwenden Sie den Befehl az aks nodepool add
, um einen Knotenpool hinzuzufügen, und geben Sie das Argument --ssh-access disabled
an, um SSH während der Erstellung des Knotenpools zu deaktivieren.
az aks nodepool add --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled
Nach wenigen Minuten ist die Ausführung des Befehls abgeschlossen, und es werden Informationen zum Cluster im JSON-Format zurückgegeben, die anzeigen, dass mynodepool erfolgreich erstellt wurde. Das folgende Beispiel zeigt die Ausgabe und die Ergebnisse im Zusammenhang mit der Deaktivierung von SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Deaktivieren von SSH für einen vorhandenen Knotenpool
Verwenden Sie das Argument [az aks nodepool update][az-aks-nodepool-update] command with the
--ssh-access disabled', um SSH (Vorschau) in einem vorhandenen Knotenpool zu deaktivieren.
az aks nodepool update --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled
Nach wenigen Minuten ist die Ausführung des Befehls abgeschlossen, und es werden Informationen zum Cluster im JSON-Format zurückgegeben, die anzeigen, dass mynodepool erfolgreich erstellt wurde. Das folgende Beispiel zeigt die Ausgabe und die Ergebnisse im Zusammenhang mit der Deaktivierung von SSH:
"securityProfile": {
"sshAccess": "Disabled"
},
Damit die Änderung wirksam wird, müssen Sie mithilfe des Befehls az aks nodepool upgrade
für den Knotenpool ein Reimaging durchführen.
az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only
Erneutes Aktivieren von SSH in einem vorhandenen Cluster
Verwenden Sie den Befehl az aks update
, um einen vorhandenen Cluster zu aktualisieren, und geben Sie das Argument --ssh-access localuser
an, um SSH (Vorschau) für alle Knotenpools im Cluster erneut zu aktivieren.
az aks update --resource-group myResourceGroup --name myManagedCluster --ssh-access localuser
Die folgende Meldung wird zurückgegeben, während der Prozess ausgeführt wird:
Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect."
Nach der erneuten Aktivierung von SSH wird für die Knoten nicht automatisch ein Reimaging durchgeführt. Sie können jederzeit einen Reimagingvorgang durchführen.
Wichtig
Während dieses Vorgangs werden alle Instanzen der VM-Skalierungsgruppe aktualisiert und das Image für die Verwendung des neuen öffentlichen SSH-Schlüssels neu erstellt.
Erneutes Aktivieren von SSH für einen bestimmten Knotenpool
Verwenden Sie den Befehl az aks update
, um einen bestimmten Knotenpool zu aktualisieren, und geben Sie das Argument --ssh-access localuser
an, um SSH (Vorschau) in diesem Knotenpool im Cluster erneut zu aktivieren. Im folgenden Beispiel ist nodepool1 der Zielknotenpool.
az aks nodepool update --cluster-name myManagedCluster --name nodepool1 --resource-group myResourceGroup --ssh-access localuser
Die folgende Meldung wird zurückgegeben, wenn der Prozess ausgeführt wird:
Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect.
Wichtig
Während dieses Vorgangs werden alle Instanzen der VM-Skalierungsgruppe aktualisiert und das Image für die Verwendung des neuen öffentlichen SSH-Schlüssels neu erstellt.
Status des SSH-Diensts
Führen Sie die folgenden Schritte aus, um die Node-Shell auf einem Knoten zu verwenden und den SSH-Dienststatus mithilfe von systemctl
zu untersuchen.
Rufen Sie die standardmäßige Bash-Shell ab, indem Sie den Befehl
kubectl node-shell <node>
ausführen.kubectl node-shell aks-nodepool1-20785627-vmss000001
Führen Sie den Befehl
systemctl
aus, um den Status des SSH-Diensts zu überprüfen.systemctl status ssh
Wenn SSH deaktiviert ist, zeigt die folgende Beispielausgabe die Ergebnisse:
ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; disabled; vendor preset: enabled)
Active: inactive (dead) since Wed 2024-01-03 15:36:57 UTC; 20min ago
Wenn SSH aktiviert ist, zeigt die folgende Beispielausgabe die Ergebnisse:
ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-01-03 15:40:20 UTC; 19min ago
Nächste Schritte
Um Probleme bei der SSH-Konnektivität mit Ihren Clusterknoten zu beheben, können Sie die Kubelet-Protokolle anzeigen oder die Kubernetes-Masterknotenprotokolle anzeigen.
Azure Kubernetes Service