Snelle stappen: Een openbaar-persoonlijk SSH-sleutelpaar maken en gebruiken voor Linux-VM's in Azure

Van toepassing op: ✔️ Flexibele schaalsets voor Linux-VM's ✔️

Met een SSH-sleutelpaar (Secure Shell) kunt u virtuele machines (VM's) in Azure maken die gebruikmaken van SSH-sleutels voor verificatie. In dit artikel wordt beschreven hoe u snel een openbaar en persoonlijk SSH-sleutelpaar voor Linux-VM's kunt genereren en gebruiken. U kunt deze stappen uitvoeren met de Azure Cloud Shell, een macOS- of Een Linux-host.

Voor hulp bij het oplossen van problemen met SSH raadpleegt u Problemen met SSH-verbindingen oplossen met een Azure Linux-VM die uitvalt, fouten veroorzaakt of wordt geweigerd.

Notitie

VM's die zijn gemaakt met behulp van SSH-sleutels, worden standaard geconfigureerd met wachtwoorden uitgeschakeld, waardoor het lastiger wordt om beveiligingsaanvallen te raden.

Zie Gedetailleerde stappen voor het maken van SSH-sleutelparen voor meer achtergrondinformatie en voorbeelden.

Zie SSH-sleutels gebruiken met Windows in Azure voor aanvullende manieren om SSH-sleutels te genereren en te gebruiken op een Windows-computer.

Ondersteunde SSH-sleutelindelingen

Azure ondersteunt momenteel SSH protocol 2 (SSH-2) RSA openbaar-persoonlijke sleutelparen met een minimale lengte van 2048 bits. Andere sleutelindelingen, zoals ED25519 en ECDSA, worden niet ondersteund.

Een SSH-sleutelpaar maken

Gebruik de opdracht ssh-keygen om openbare en privé-SSH-sleutelbestanden te genereren. Deze bestanden worden standaard gemaakt in de map ~/.ssh. U kunt een andere locatie en een optioneel wachtwoord (wachtwoordzin) opgeven voor toegang tot het persoonlijke sleutelbestand. Als er op de opgegeven locatie een SSH-sleutelpaar met dezelfde naam bestaat, worden deze bestanden overschreven.

Met de volgende opdracht maakt u een SSH-sleutelpaar met RSA-versleuteling en een bitlengte van 4096:

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

Notitie

U kunt ook sleutelparen maken met de Azure CLI met de opdracht az sshkey create , zoals beschreven in SSH-sleutels genereren en opslaan.

Als u de Azure CLI gebruikt om uw VIRTUELE machine te maken met de opdracht az vm create , kunt u optioneel openbare SSH- en persoonlijke sleutelbestanden genereren met behulp van de --generate-ssh-keys optie. De sleutelbestanden worden opgeslagen in de map ~/.ssh, tenzij anders aangegeven met de --ssh-dest-key-path optie . Als er al een ssh-sleutelpaar bestaat en de --generate-ssh-keys optie wordt gebruikt, wordt er geen nieuw sleutelpaar gegenereerd, maar wordt het bestaande sleutelpaar gebruikt. Vervang in de volgende opdracht VMname en RGname door uw eigen waarden:

az vm create --name VMname --resource-group RGname --image UbuntuLTS --generate-ssh-keys 

Een openbare SSH-sleutel opgeven bij het implementeren van een VM

Als u een Linux-VM wilt maken die gebruikmaakt van SSH-sleutels voor verificatie, geeft u uw openbare SSH-sleutel op bij het maken van de VM met behulp van de Azure Portal, Azure CLI, Azure Resource Manager-sjablonen of andere methoden:

Als u niet bekend bent met de indeling van een openbare SSH-sleutel, kunt u de openbare sleutel weergeven met de volgende cat opdracht, waarbij ~/.ssh/id_rsa.pub u indien nodig vervangt door het pad en de bestandsnaam van uw eigen openbare sleutelbestand:

cat ~/.ssh/id_rsa.pub

Een typische openbare sleutelwaarde ziet er als volgt uit:

ssh-rsa AAAAB3NzaC1yc2EAABADAQABAAACAQC1/KanayNr+Q7ogR5mKnGpKWRBQU7F3Jjhn7utdf7Z2iUFykaYx+MInSnT3XdnBRS8KhC0IP8ptbngIaNOWd6zM8hB6UrcRTlTpwk/SuGMw1Vb40xlEFphBkVEUgBolOoANIEXriAMvlDMZsgvnMFiQ12tD/u14cxy1WNEMAftey/vX3Fgp2vEq4zHXEliY/sFZLJUJzcRUI0MOfHXAuCjg/qyqqbIuTDFyfg8k0JTtyGFEMQhbXKcuP2yGx1uw0ice62LRzr8w0mszftXyMik1PnshRXbmE2xgINYg5xo/ra3mq2imwtOKJpfdtFoMiKhJmSNHBSkK7vFTeYgg0v2cQ2+vL38lcIFX4Oh+QCzvNF/AXoDVlQtVtSqfQxRVG79Zqio5p12gHFktlfV7reCBvVIhyxc2LlYUkrq4DHzkxNY5c9OGSHXSle9YsO3F1J5ip18f6gPq4xFmo6dVoJodZm9N0YMKCkZ4k1qJDESsJBk2ujDPmQQeMjJX3FnDXYYB182ZCGQzXfzlPDC29cWVgDZEXNHuYrOLmJTmYtLZ4WkdUhLLlt5XsdoKWqlWpbegyYtGZgeZNRtOOdN6ybOPJqmYFd2qRtb4sYPniGJDOGhx4VodXAjT09omhQJpE6wlZbRWDvKC55R2d/CSPHJscEiuudb+1SG2uA/oik/WQ== username@domainname

Als u de inhoud van het bestand met de openbare sleutel kopieert en plakt voor gebruik in de Azure Portal of een Resource Manager-sjabloon, moet u ervoor zorgen dat u geen volgspaties kopieert. Als u een openbare sleutel in macOS wilt kopiëren, kunt u het bestand met de openbare sleutel doorsluisen naar pbcopy. Op dezelfde manier kunt u in Linux het openbare-sleutelbestand doorsluisen naar programma's zoals xclip.

De openbare sleutel die u op uw Virtuele Linux-machine in Azure plaatst, wordt standaard opgeslagen in ~/.ssh/id_rsa.pub, tenzij u een andere locatie hebt opgegeven toen u het sleutelpaar maakte. Als u de Azure CLI 2.0 wilt gebruiken om uw virtuele machine te maken met een bestaande openbare sleutel, geeft u de waarde en eventueel de locatie van deze openbare sleutel op met behulp van de opdracht az vm create met de --ssh-key-values optie . Vervang in de volgende opdracht myVM, myResourceGroup, UbuntuLTS, azureuser en mysshkey.pub door uw eigen waarden:

az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image UbuntuLTS \
  --admin-username azureuser \
  --ssh-key-values mysshkey.pub

Als u meerdere SSH-sleutels wilt gebruiken met uw VM, kunt u deze invoeren in een door spaties gescheiden lijst, zoals deze --ssh-key-values sshkey-desktop.pub sshkey-laptop.pub.

SSH in uw virtuele machine

Met de openbare sleutel die is geïmplementeerd op uw Azure-VM en de persoonlijke sleutel op uw lokale systeem, maakt U SSH verbinding met uw VM met behulp van het IP-adres of de DNS-naam van uw VM. Vervang in de volgende opdracht azureuser en myvm.westus.cloudapp.azure.com door de gebruikersnaam van de beheerder en de volledig gekwalificeerde domeinnaam (of het IP-adres):

ssh azureuser@myvm.westus.cloudapp.azure.com

Als u voor het eerst verbinding maakt met deze VM, wordt u gevraagd om de vingerafdruk van de host te controleren. Het is verleidelijk om de vingerafdruk te accepteren die wordt weergegeven, maar die benadering stelt u bloot aan een mogelijke persoon-in-the-middle-aanval. U moet altijd de vingerafdruk van de host valideren. U hoeft dit alleen te doen wanneer u voor het eerst verbinding maakt vanaf een client. Als u de vingerafdruk van de host wilt verkrijgen via de portal, gebruikt u de functie Opdracht uitvoeren om de opdracht ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'uit te voeren.

Schermopname van het gebruik van de opdracht Uitvoeren om de vingerafdruk van de host te valideren.

Als u de opdracht wilt uitvoeren met behulp van CLI, gebruikt u az vm run-command invoke.

Als u een wachtwoordzin hebt opgegeven bij het maken van het sleutelpaar, voert u die wachtwoordzin in wanneer u hierom wordt gevraagd tijdens het aanmeldingsproces. De VM wordt toegevoegd aan het bestand ~/.ssh/known_hosts en u wordt niet gevraagd om opnieuw verbinding te maken totdat de openbare sleutel op uw Azure-VM is gewijzigd of de servernaam is verwijderd uit ~/.ssh/known_hosts.

Als de VM gebruikmaakt van het Just-In-Time-toegangsbeleid, moet u toegang aanvragen voordat u verbinding kunt maken met de VM. Zie Toegang tot virtuele machines beheren met behulp van het Just-In-Time-beleid voor meer informatie over het Just-In-Time-beleid.

Volgende stappen