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.
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:
- Een virtuele Linux-machine maken met Azure Portal
- Een virtuele Linux-machine maken met de Azure CLI
- Een Virtuele Linux-machine maken met behulp van een Azure-sjabloon
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.
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
Als u problemen ondervindt met SSH-verbindingen met Azure-VM's, raadpleegt u Problemen met SSH-verbindingen met een Virtuele Azure Linux-machine oplossen.