Hantera SSH för säker åtkomst till AKS-noder (Azure Kubernetes Service)

Den här artikeln beskriver hur du konfigurerar SSH-nycklarna (förhandsversion) på dina AKS-kluster eller nodpooler, under den inledande distributionen eller vid ett senare tillfälle.

AKS stöder följande konfigurationsalternativ för att hantera SSH-nycklar på klusternoder:

  • Skapa ett kluster med SSH-nycklar
  • Uppdatera SSH-nycklarna i ett befintligt AKS-kluster
  • Inaktivera och aktivera SSH-tjänsten

Viktigt!

AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning och anmäl dig. Förhandsversioner tillhandahålls "som är" och "som tillgängliga", och de undantas från serviceavtalen och den begränsade garantin. AKS-förhandsversioner omfattas delvis av kundsupport på bästa sätt. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:

Innan du börjar

  • Du behöver aks-preview version 0.5.116 eller senare för att kunna använda Update.
  • Du behöver aks-preview version 1.0.0b6 eller senare för att kunna använda Inaktivera.
  • Funktionen Skapa och uppdatera SSH stöder Linux-, Windows- och Azure Linux-nodpooler i befintliga kluster.
  • Funktionen Inaktivera SSH stöds inte i den här förhandsversionen på nodpooler som kör Windows Server-operativsystemet.

Installera Azure CLI-tillägget aks-preview

  1. Installera aks-preview-tillägget med kommandot az extension add .

    az extension add --name aks-preview
    
  2. Uppdatera till den senaste versionen av tillägget med kommandot az extension update .

    az extension update --name aks-preview
    

Registrera funktionsflaggan DisableSSHPreview

Om du vill använda funktionen Inaktivera SSH utför du följande steg för att registrera och aktivera den i din prenumeration.

  1. Registrera funktionsflaggan DisableSSHPreviewaz feature register med kommandot .

    az feature register --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
    

    Det tar några minuter för statusen att visa Registrerad.

  2. Kontrollera registreringsstatusen az feature show med kommandot .

    az feature show --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
    
  3. När statusen visar Registrerad uppdaterar du registreringen av resursprovidern Microsoft.ContainerService med hjälp av az provider register kommandot .

    az provider register --namespace Microsoft.ContainerService
    

Skapa ett AKS-kluster med SSH-nycklar

Använd kommandot az aks create för att distribuera ett AKS-kluster med en offentlig SSH-nyckel. Du kan antingen ange nyckeln eller en nyckelfil med argumentet --ssh-key-value .

SSH-parameter beskrivning Default value
--generate-ssh-key Om du inte har egna SSH-nycklar anger du --generate-ssh-key. Azure CLI genererar automatiskt en uppsättning SSH-nycklar och sparar dem i standardkatalogen ~/.ssh/.
--ssh-key-value Offentlig nyckelsökväg eller nyckelinnehåll som ska installeras på virtuella noddatorer för SSH-åtkomst. Exempel: ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm ~/.ssh/id_rsa.pub
--no-ssh-key Om du inte behöver SSH-nycklar anger du det här argumentet. AKS genererar dock automatiskt en uppsättning SSH-nycklar eftersom Resursberoendet för virtuella Azure-datorer inte stöder en tom SSH-nyckelfil. Därför returneras inte nycklarna och kan inte användas för att SSH till de virtuella noddatorerna. Den privata nyckeln tas bort och sparas inte.

Kommentar

Om inga parametrar anges refererar Azure CLI som standard till de SSH-nycklar som lagras i ~/.ssh/id_rsa.pub filen. Om nycklarna inte hittas returnerar kommandot meddelandet An RSA key file or key value must be supplied to SSH Key Value.

Följande är exempel på det här kommandot:

  • Så här skapar du ett kluster och använder de standardgenererade SSH-nycklarna:

    az aks create --name myAKSCluster --resource-group MyResourceGroup --generate-ssh-key
    
  • Om du vill ange en offentlig SSH-nyckelfil tar du med --ssh-key-value argumentet:

    az aks create --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
    

Uppdatera offentlig SSH-nyckel i ett befintligt AKS-kluster

az aks update Använd kommandot för att uppdatera den offentliga SSH-nyckeln (förhandsversion) i klustret. Den här åtgärden uppdaterar nyckeln för alla nodpooler. Du kan antingen ange en nyckel eller en nyckelfil med argumentet --ssh-key-value .

Kommentar

Uppdatering av SSH-nycklarna stöds i skalningsuppsättningar för virtuella Azure-datorer med AKS-kluster.

Följande är exempel på det här kommandot:

  • Om du vill ange ett nytt offentligt SSH-nyckelvärde inkluderar du --ssh-key-value argumentet:

    az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'
    
  • Om du vill ange en offentlig SSH-nyckelfil anger du den --ssh-key-value med argumentet :

    az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
    

Viktigt!

När du har uppdaterat SSH-nyckeln uppdaterar AKS inte nodpoolen automatiskt. När som helst kan du välja att utföra en nodpooluppdateringsåtgärd. Åtgärden uppdatera SSH-nycklar börjar gälla när en nodbilduppdatering har slutförts.

Inaktivera SSH-översikt

För att förbättra säkerheten och stödja företagets säkerhetskrav eller strategi stöder AKS inaktivering av SSH (förhandsversion) både i klustret och på nodpoolsnivå. Inaktivera SSH introducerar en förenklad metod jämfört med den enda lösning som stöds, vilket kräver att du konfigurerar regler för nätverkssäkerhetsgrupp på AKS-undernätet/nodens nätverksgränssnittskort (NIC).

När du inaktiverar SSH när klustret skapas börjar det gälla när klustret har skapats. Men när du inaktiverar SSH i ett befintligt kluster eller en befintlig nodpool inaktiverar AKS inte SSH automatiskt. När som helst kan du välja att utföra en uppgraderingsåtgärd för nodpoolen. Åtgärden inaktivera/aktivera SSH-nycklar börjar gälla när nodbilduppdateringen har slutförts.

SSH-parameter beskrivning
disabled SSH-tjänsten är inaktiverad.
localuser SSH-tjänsten är aktiverad och användare med SSH-nycklar kan komma åt noden på ett säkert sätt.

Kommentar

kubectl-felsökningsnoden fortsätter att fungera när du har inaktiverat SSH eftersom den inte är beroende av SSH-tjänsten.

Inaktivera SSH för en ny klusterdistribution

Som standard är SSH-tjänsten på AKS-klusternoder öppen för alla användare och poddar som körs i klustret. Du kan förhindra direkt SSH-åtkomst från alla nätverk till klusternoder för att begränsa attackvektorn om en container i en podd komprometteras. az aks create Använd kommandot för att skapa ett nytt kluster och inkludera --ssh-access disabled argumentet för att inaktivera SSH (förhandsversion) på alla nodpooler när klustret skapas.

Viktigt!

När du har inaktiverat SSH-tjänsten kan du inte SSH till klustret för att utföra administrativa uppgifter eller felsöka.

az aks create -g myResourceGroup -n myManagedCluster --ssh-access disabled

Efter några minuter slutförs kommandot och returnerar JSON-formaterad information om klustret. Följande exempel liknar utdata och resultaten som rör inaktivering av SSH:

"securityProfile": {
"sshAccess": "Disabled"
},

Inaktivera SSH i ett befintligt kluster

az aks update Använd kommandot för att uppdatera ett befintligt kluster och inkludera --ssh-access disabled argumentet för att inaktivera SSH (förhandsversion) på alla nodpooler i klustret.

az aks update -g myResourceGroup -n myManagedCluster --ssh-access disabled

Efter några minuter slutförs kommandot och returnerar JSON-formaterad information om klustret. Följande exempel liknar utdata och resultaten som rör inaktivering av SSH:

"securityProfile": {
"sshAccess": "Disabled"
},

För att ändringen ska börja gälla måste du återskapa alla nodpooler med hjälp az aks nodepool upgrade av kommandot .

az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only

Viktigt!

Under den här åtgärden uppgraderas och återskapas alla vm-skalningsuppsättningsinstanser för att använda den nya SSH-konfigurationen.

Inaktivera SSH för en ny nodpool

az aks nodepool add Använd kommandot för att lägga till en nodpool och inkludera --ssh-access disabled argumentet för att inaktivera SSH när nodpoolen skapas.

az aks nodepool add --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled  

Efter några minuter slutförs kommandot och returnerar JSON-formaterad information om klustret som anger att mynodepool har skapats. Följande exempel liknar utdata och resultaten som rör inaktivering av SSH:

"securityProfile": {
"sshAccess": "Disabled"
},

Inaktivera SSH för en befintlig nodpool

Använd argumentet [az aks nodepool update][az-aks-nodepool-update] command with the --ssh-access disabled" för att inaktivera SSH (förhandsversion) i en befintlig nodpool.

az aks nodepool update --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled

Efter några minuter slutförs kommandot och returnerar JSON-formaterad information om klustret som anger att mynodepool har skapats. Följande exempel liknar utdata och resultaten som rör inaktivering av SSH:

"securityProfile": {
"sshAccess": "Disabled"
},

För att ändringen ska börja gälla måste du återskapa nodpoolen med hjälp az aks nodepool upgrade av kommandot .

az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only

Återaktivera SSH i ett befintligt kluster

az aks update Använd kommandot för att uppdatera ett befintligt kluster och inkludera --ssh-access localuser argumentet för att återaktivera SSH (förhandsversion) på alla nodpooler i klustret.

az aks update -g myResourceGroup -n myManagedCluster --ssh-access localuser

Följande meddelande returneras medan processen utförs:

Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect."

Efter återaktivering av SSH kommer noderna inte att återskapas automatiskt. När som helst kan du välja att utföra en omimeringsåtgärd.

Viktigt!

Under den här åtgärden uppgraderas och omskapas alla vm-skalningsuppsättningsinstanser för att använda den nya offentliga SSH-nyckeln.

Återaktivera SSH för en specifik nodpool

az aks update Använd kommandot för att uppdatera en specifik nodpool och inkludera --ssh-access localuser argumentet för att återaktivera SSH (förhandsversion) på nodpoolen i klustret. I följande exempel är nodepool1 målnodpoolen.

az aks nodepool update --cluster-name myManagedCluster --name nodepool1 --resource-group myResourceGroup --ssh-access localuser 

Följande meddelande returneras när processen utförs:

Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect.

Viktigt!

Under den här åtgärden uppgraderas och omskapas alla vm-skalningsuppsättningsinstanser för att använda den nya offentliga SSH-nyckeln.

SSH-tjänststatus

Utför följande steg för att använda node-shell på en nod och inspektera SSH-tjänststatus med hjälp av systemctl.

  1. Hämta standard-bash-gränssnittet genom att köra kommandokommandot kubectl node-shell <node> .

    kubectl node-shell aks-nodepool1-20785627-vmss000001
    
  2. systemctl Kör kommandot för att kontrollera status för SSH-tjänsten.

    systemctl status ssh
    

Om SSH är inaktiverat visar följande exempelutdata resultatet:

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

Om SSH är aktiverat visar följande exempelutdata resultatet:

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ästa steg

För att felsöka eventuella problem med SSH-anslutningen till dina klusternoder kan du visa kubelet-loggarna eller visa Kubernetes-huvudnodloggarna.