Delen via


Snelle stappen: Een openbaar-persoonlijk SSH-sleutelpaar maken en gebruiken voor Virtuele Linux-machines in Azure

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

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

Zie Voor hulp bij het oplossen van problemen met SSH SSH-verbindingen met een Azure Linux-VM die mislukt, fouten optreedt of wordt geweigerd.

Notitie

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

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

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

Ondersteunde SSH-sleutelindelingen

Azure ondersteunt momenteel de volgende sleuteltypen:

  • SSH-protocol 2 (SSH-2) RSA (Klinknagel, Shamir, Adleman) met een minimale lengte van 2048 bits
  • ED25519 sleutels met een vaste lengte van 256 bits

Andere belangrijke indelingen, zoals Elliptic-curve Diffie–Hellman (ECDH) en Elliptic Curve Digital Signature Algorithm (ECDSA) worden momenteel 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 bestand met de persoonlijke sleutel. 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 -f ~/.ssh/id_rsa.pem

Met de volgende opdracht maakt u een SSH-sleutelpaar met behulp van ED25519-versleuteling met een vaste lengte van 256 bits:

ssh-keygen -m PEM -t ed25519 -f ~/.ssh/id_ed25519.pem

Notitie

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

Als u de Azure CLI gebruikt om uw virtuele machine te maken met de opdracht az vm create , kunt u eventueel openbare en persoonlijke SSH-sleutelbestanden genereren met behulp van de --generate-ssh-keys optie. De sleutelbestanden worden opgeslagen in de map ~/.ssh, tenzij anders is opgegeven 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 in plaats daarvan het bestaande sleutelpaar gebruikt. Vervang in de volgende opdracht VMname, RGname en UbuntuLTS door uw eigen waarden:

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

Notitie

az sshkey create command deafults to RSA encryption en kan niet worden gebruikt om ED25519 sleutelparen te genereren, maar u kunt een ED25519 sleutelpaar maken met behulp van ssh-keygen zoals hierboven beschreven en vervolgens die openbare sleutel gebruiken om een virtuele machine te maken.

Een openbare SSH-sleutel opgeven bij het implementeren van een VIRTUELE machine

Als u een Virtuele Linux-machine wilt maken die gebruikmaakt van SSH-sleutels voor verificatie, geeft u uw openbare SSH-sleutel op bij het maken van de VIRTUELE machine met behulp van 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 uw openbare sleutel weergeven met de volgende cat opdracht, waarbij u het pad en de bestandsnaam van uw eigen openbare-sleutelbestand vervangt ~/.ssh/id_rsa.pub , indien nodig:

RSA-sleutelpaar

cat ~/.ssh/id_rsa.pub

Een typische openbare RSA-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

ED25519 sleutelpaar

cat ~/.ssh/id_ed25519.pub

Een typische ED25519 openbare-sleutelwaarde ziet er als volgt uit:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILRjWGWLeiUQ3U9fNnCsNpXIyACpD/Jbm09OZGsz3DIM username@domainname

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

De openbare sleutel die u op uw Linux-VM in Azure plaatst, wordt standaard opgeslagen onder ~/.ssh/ map, 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 Ubuntu2204 \
  --admin-username azureuser \
  --ssh-key-values mysshkey.pub

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

SSH in uw virtuele machine

Nu de openbare sleutel is geïmplementeerd op uw Azure-VM en de persoonlijke sleutel op uw lokale systeem, wordt SSH in uw VIRTUELE machine gebruikt met behulp van het IP-adres of de DNS-naam van uw VIRTUELE machine. Vervang in de volgende opdracht azureuser en myvm.westus.cloudapp.azure.com door de gebruikersnaam van de beheerder en de fully qualified domain name (of het IP-adres):

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

Als u voor het eerst verbinding maakt met deze VIRTUELE machine, wordt u gevraagd om de vingerafdruk van de host te verifiëren. Het is verleidelijk om de vingerafdruk te accepteren die wordt gepresenteerd, maar die benadering maakt 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 via de portal wilt ophalen, 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 cli, gebruikt u az vm run-command invoke.

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

Als de VIRTUELE machine gebruikmaakt van het Just-In-Time-toegangsbeleid, moet u toegang aanvragen voordat u verbinding kunt maken met de virtuele machine. 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