Sdílet prostřednictvím


Správa SSH pro zabezpečený přístup k uzlům Azure Kubernetes Service (AKS)

Tento článek popisuje, jak nakonfigurovat klíče SSH (Preview) v clusterech nebo fondech uzlů AKS během počátečního nasazení nebo později.

AKS podporuje následující možnosti konfigurace pro správu klíčů SSH na uzlech clusteru:

  • Vytvoření clusteru s klíči SSH
  • Aktualizace klíčů SSH v existujícím clusteru AKS
  • Zakázání a povolení služby SSH

Důležité

Funkce AKS ve verzi Preview jsou k dispozici na samoobslužné bázi a vyžadují aktivní přihlášení. Verze Preview jsou poskytovány "tak, jak jsou" a "jak jsou dostupné," a jsou vyloučeny ze smluv o úrovni služeb a omezené záruky. Verze Preview AKS jsou částečně pokryty zákaznickou podporou na základě maximálního úsilí. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:

Důležité

Od 30. listopadu 2025 už AKS nebude podporovat ani poskytovat aktualizace zabezpečení pro Azure Linux 2.0. Od 31. března 2026 se image uzlů odeberou a nebudete moct škálovat fondy uzlů. Migrujte na podporovanou verzi Azure Linuxu buď aktualizací fondů uzlů na podporovanou verzi Kubernetes, nebo migrací na osSku AzureLinux3. Další informace najdete v tématu [Vyřazení z provozu] Uzel poolů Azure Linux 2.0 v AKS.

Než začnete

  • K používání aks-preview potřebujete verzi 0.5.116 nebo novější.
  • K použití aks-preview potřebujete verzi 1.0.0b6 nebo novější.
  • Funkce Vytvoření a aktualizace SSH podporuje fondy uzlů Linuxu, Windows a Azure Linuxu v existujících clusterech.

aks-preview Instalace rozšíření Azure CLI

  1. Nainstalujte rozšíření aks-preview pomocí az extension add příkazu.

    az extension add --name aks-preview
    
  2. Pomocí příkazu aktualizujte na nejnovější verzi rozšíření az extension update .

    az extension update --name aks-preview
    

Zaregistrujte příznak funkce DisableSSHPreview

Pokud chcete použít funkci Zakázat SSH, proveďte následující kroky a zaregistrujte ho ve svém předplatném.

  1. Pomocí příkazu DisableSSHPreview zaregistrujte příznak funkce az feature register.

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

    Zobrazení stavu Zaregistrované trvá několik minut.

  2. Pomocí příkazu ověřte stav az feature show registrace.

    az feature show --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
    
  3. Jakmile se stav projeví jako zaregistrovaný, aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí az provider register příkazu.

    az provider register --namespace Microsoft.ContainerService
    

Vytvoření clusteru AKS s klíči SSH

Pomocí příkazu az aks create nasaďte cluster AKS s veřejným klíčem SSH. Pomocí argumentu --ssh-key-value můžete zadat klíč nebo soubor klíče.

Parametr SSH Popis Výchozí hodnota
--generate-ssh-key Pokud nemáte vlastní klíče SSH, zadejte --generate-ssh-key. Azure CLI automaticky vygeneruje sadu klíčů SSH a uloží je do výchozího adresáře ~/.ssh/.
--ssh-key-value Cesta k veřejnému klíči nebo obsah klíče, které se mají nainstalovat na virtuální počítače uzlů pro přístup přes SSH. Například ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm. ~/.ssh/id_rsa.pub
--no-ssh-key Pokud nepotřebujete klíče SSH, zadejte tento argument. AKS ale automaticky vygeneruje sadu klíčů SSH, protože závislost prostředků virtuálního počítače Azure nepodporuje prázdný soubor klíčů SSH. V důsledku toho se klíče nevrátí a nejde je použít k připojení SSH k virtuálním počítačům uzlů. Privátní klíč je odstraněn a není uložen.

Poznámka:

Pokud nejsou zadány žádné parametry, Azure CLI ve výchozím nastavení odkazuje na klíče SSH uložené v ~/.ssh/id_rsa.pub souboru. Pokud klíče nenajdete, příkaz vrátí zprávu An RSA key file or key value must be supplied to SSH Key Value.

Tady jsou příklady tohoto příkazu:

  • Vytvoření clusteru a použití výchozích vygenerovaných klíčů SSH:

    az aks create --name myAKSCluster --resource-group MyResourceGroup --generate-ssh-key
    
  • Pokud chcete zadat soubor veřejného klíče SSH, zahrňte --ssh-key-value argument:

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

Aktualizace veřejného klíče SSH v existujícím clusteru AKS

az aks update Pomocí příkazu aktualizujte veřejný klíč SSH (Preview) ve vašem clusteru. Tato operace aktualizuje klíč ve všech fondech uzlů. Pomocí argumentu --ssh-key-value můžete zadat klíč nebo soubor klíče.

Poznámka:

Aktualizace klíčů SSH se podporuje ve škálovacích sadách virtuálních počítačů Azure s clustery AKS.

Tady jsou příklady tohoto příkazu:

  • Pokud chcete zadat novou hodnotu veřejného klíče SSH, zahrňte argument --ssh-key-value :

    az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'
    
  • Pokud chcete zadat soubor veřejného klíče SSH, zadejte ho pomocí argumentu --ssh-key-value :

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

Důležité

Po aktualizaci klíče SSH se AKS automaticky neaktualizuje fond uzlů. Kdykoli se můžete rozhodnout provést operaci aktualizace fondu uzlů. Operace aktualizace klíčů SSH se projeví po dokončení aktualizace image uzlu. U clusterů s povoleným automatickým zřizováním uzlů je možné aktualizaci image uzlu provést použitím nového popisku u vlastního prostředku Kubernetes NodePool.

Zakázání přehledu SSH

Pokud chcete zlepšit zabezpečení a podporovat požadavky nebo strategii podnikového zabezpečení, AKS podporuje zakázání SSH (Preview) v clusteru i na úrovni fondu uzlů. Zákaz SSH představuje zjednodušený přístup v porovnání s jediným podporovaným řešením, které vyžaduje konfiguraci pravidel skupin zabezpečení sítě na síťové kartě podsítě nebo uzlu AKS. Zakázání SSH podporuje pouze fondy uzlů škálovacích sad virtuálních počítačů.

Když při vytváření clusteru zakážete SSH, projeví se po vytvoření clusteru. Pokud ale zakážete SSH v existujícím clusteru nebo fondu uzlů, AKS automaticky nezakáže SSH. Kdykoli se můžete rozhodnout provést operaci upgradování poolu uzlů. Operace zakázání nebo povolení klíčů SSH se projeví po dokončení aktualizace image uzlu.

Poznámka:

Když na úrovni clusteru zakážete SSH, platí to pro všechny existující fondy uzlů. Všechny fondy uzlů vytvořené po této operaci budou mít ve výchozím nastavení povolený SSH a abyste je mohli zakázat, budete muset tyto příkazy spustit znovu.

Parametr SSH Popis
disabled Služba SSH je zakázaná.
localuser Služba SSH je povolená a uživatelé s klíči SSH mají zabezpečený přístup k uzlu.

Poznámka:

Ladicí uzel kubectl bude fungovat i po zakázání protokolu SSH, protože nezávisí na službě SSH.

Zakázání SSH v novém nasazení clusteru

Ve výchozím nastavení je služba SSH na uzlech clusteru AKS otevřená všem uživatelům a podům spuštěným v clusteru. Pokud dojde k ohrožení kontejneru v podu, můžete zabránit přímému přístupu přes SSH z libovolné sítě k uzlům clusteru, abyste omezili vektor útoku. az aks create Pomocí příkazu vytvořte nový cluster a zahrňte --ssh-access disabled argument, který zakáže SSH (Preview) ve všech fondech uzlů během vytváření clusteru.

Důležité

Po zakázání služby SSH se nemůžete připojit do clusteru pomocí SSH, abyste mohli provádět správu nebo řešit problémy.

Poznámka:

V nově vytvořeném clusteru zakázání SSH nakonfiguruje pouze první fond systémových uzlů. Všechny ostatní fondy uzlů je potřeba nakonfigurovat na úrovni fondu uzlů.

az aks create --resource-group myResourceGroup --name myManagedCluster --ssh-access disabled

Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON. Následující příklad se podobá výstupu a výsledkům souvisejícím se zákazem SSH:

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

Zakázání SSH pro nový fond uzlů

az aks nodepool add Pomocí příkazu přidejte fond uzlů a zahrňte --ssh-access disabled argument, který zakáže SSH během vytváření fondu uzlů.

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

Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON, které ukazují, že mynodepool byl úspěšně vytvořen. Následující příklad se podobá výstupu a výsledkům souvisejícím se zákazem SSH:

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

Zakázání SSH pro existující fond uzlů

Pomocí argumentu [`--ssh-access disabled`] zakažte SSH (preview) ve stávajícím fondu uzlů.

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

Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON, které ukazují, že mynodepool byl úspěšně vytvořen. Následující příklad se podobá výstupu a výsledkům souvisejícím se zákazem SSH:

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

Aby se změna projevila, musíte fond uzlů znovu vytvořit pomocí az aks nodepool upgrade příkazu.

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

Důležité

Pokud chcete zakázat SSH v existujícím clusteru, musíte zakázat SSH pro každý fond uzlů v tomto clusteru.

Opětovné povolení SSH pro konkrétní fond uzlů

az aks update Pomocí příkazu aktualizujte konkrétní fond uzlů a zahrňte --ssh-access localuser argument pro opětovné povolení SSH (Preview) ve fondu uzlů v clusteru. V následujícím příkladu je fond uzlů 1 cílovým fondem uzlů.

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

Při provedení procesu se vrátí následující zpráva:

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

Důležité

Během této operace se všechny instance Škálovací Sady Virtuálních Počítačů upgradují a znovu se zprovozní, aby používaly nový veřejný klíč SSH.

Stav služby SSH

Pomocí následujícího postupu použijte node-shell na jeden uzel a zkontrolujte stav služby SSH pomocí systemctlpříkazu .

  1. Spuštěním příkazu kubectl node-shell <node> získejte standardní prostředí Bash.

    kubectl node-shell aks-nodepool1-20785627-vmss000001
    
  2. Spuštěním systemctl příkazu zkontrolujte stav služby SSH.

    systemctl status ssh
    

Pokud je protokol SSH zakázaný, zobrazí se výsledky v následujícím ukázkovém výstupu:

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

Pokud je povolený SSH, zobrazí se výsledky v následujícím ukázkovém výstupu:

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

Další kroky

Pokud chcete pomoct s řešením potíží s připojením SSH k uzlům clusterů, můžete zobrazit protokoly kubeletu nebo zobrazit protokoly hlavního uzlu Kubernetes.