Snabbsteg: Skapa och använda ett offentligt-privat SSH-nyckelpar för virtuella Linux-datorer i Azure

Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️

Med ett SSH-nyckelpar (Secure Shell) kan du skapa virtuella datorer i Azure som använder SSH-nycklar för autentisering. Den här artikeln visar hur du snabbt genererar och använder ett offentlig-privat SSH-nyckelfilpar för virtuella Linux-datorer. Du kan utföra de här stegen med Azure Cloud Shell, en macOS- eller Linux-värd.

Hjälp med felsökningsproblem med SSH finns i Felsöka SSH-anslutningar till en virtuell Azure Linux-dator som misslyckas, fel ut eller nekas.

Kommentar

Virtuella datorer som skapats med SSH-nycklar är som standard konfigurerade med inaktiverade lösenord, vilket avsevärt ökar svårigheten med brute-force-gissningsattacker.

Mer bakgrund och exempel finns i Detaljerade steg för att skapa SSH-nyckelpar.

Fler sätt att generera och använda SSH-nycklar på en Windows-dator finns i Använda SSH-nycklar med Windows i Azure.

SSH-nyckelformat som stöds

Azure stöder för närvarande SSH Protocol 2 (SSH-2) RSA offentlig-privata nyckelpar med en minsta längd på 2 048 bitar. Andra nyckelformat som ED25519 och ECDSA stöds inte.

Skapa ett SSH-nyckelpar

ssh-keygen Använd kommandot för att generera offentliga och privata SSH-nyckelfiler. Som standard skapas dessa filer i katalogen ~/.ssh. Du kan ange en annan plats och ett valfritt lösenord (lösenfras) för åtkomst till den privata nyckelfilen. Om det finns ett SSH-nyckelpar med samma namn på den angivna platsen skrivs dessa filer över.

Följande kommando skapar ett SSH-nyckelpar med RSA-kryptering och en bit längd på 4096:

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

Kommentar

Du kan också skapa nyckelpar med Azure CLI med kommandot az sshkey create enligt beskrivningen i Generera och lagra SSH-nycklar.

Om du använder Azure CLI för att skapa den virtuella datorn med kommandot az vm create kan du skapa offentliga och privata SSH-nyckelfiler med hjälp av --generate-ssh-keys alternativet . Nyckelfilerna lagras i katalogen ~/.ssh om inget annat anges med --ssh-dest-key-path alternativet . Om det redan finns ett ssh-nyckelpar och --generate-ssh-keys alternativet används genereras inte ett nytt nyckelpar, utan i stället används det befintliga nyckelparet. I följande kommando ersätter du VMname, RGname och UbuntuLTS med dina egna värden:

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

Ange en offentlig SSH-nyckel när du distribuerar en virtuell dator

Om du vill skapa en virtuell Linux-dator som använder SSH-nycklar för autentisering anger du din offentliga SSH-nyckel när du skapar den virtuella datorn med hjälp av Azure-portalen, Azure CLI, Azure Resource Manager-mallar eller andra metoder:

Om du inte är bekant med formatet för en offentlig SSH-nyckel kan du visa den offentliga nyckeln med följande cat kommando och ersätta ~/.ssh/id_rsa.pub med sökvägen och filnamnet för din egen offentliga nyckelfil om det behövs:

cat ~/.ssh/id_rsa.pub

Ett typiskt offentligt nyckelvärde ser ut som i det här exemplet:

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

Om du kopierar och klistrar in innehållet i den offentliga nyckelfilen som ska användas i Azure-portalen eller en Resource Manager-mall ska du se till att du inte kopierar något avslutande blanksteg. Om du vill kopiera en offentlig nyckel i macOS kan du skicka den offentliga nyckelfilen till pbcopy. På samma sätt i Linux kan du skicka den offentliga nyckelfilen till program som xclip.

Den offentliga nyckel som du placerar på den virtuella Linux-datorn i Azure lagras som standard i ~/.ssh/id_rsa.pub, såvida du inte angav en annan plats när du skapade nyckelparet. Om du vill använda Azure CLI 2.0 för att skapa den virtuella datorn med en befintlig offentlig nyckel anger du värdet och eventuellt platsen för den offentliga nyckeln med kommandot az vm create med alternativet --ssh-key-values . I följande kommando ersätter du myVM, myResourceGroup, UbuntuLTS, azureuser och mysshkey.pub med dina egna värden:

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

Om du vill använda flera SSH-nycklar med den virtuella datorn kan du ange dem i en kommaavgränsad lista, som den här --ssh-key-values sshkey-desktop.pub, sshkey-laptop.pub.

SSH till den virtuella datorn

Med den offentliga nyckeln distribuerad på din virtuella Azure-dator och den privata nyckeln i ditt lokala system, SSH till den virtuella datorn med hjälp av IP-adressen eller DNS-namnet på den virtuella datorn. I följande kommando ersätter du azureuser och myvm.westus.cloudapp.azure.com med administratörsanvändarnamnet och det fullständigt kvalificerade domännamnet (eller IP-adressen):

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

Om du ansluter till den här virtuella datorn för första gången uppmanas du att verifiera värdens fingeravtryck. Det är frestande att acceptera fingeravtrycket som presenteras, men det tillvägagångssättet utsätter dig för en möjlig person-i-mitten-attack. Du bör alltid verifiera värdens fingeravtryck. Du behöver bara göra detta första gången du ansluter från en klient. Om du vill hämta värdfingret via portalen använder du funktionen Kör kommando för att köra kommandot ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'.

Screenshot showing using the Run Command to validate the host fingerprint.

Om du vill köra kommandot med CLI använder du az vm run-command invoke.

Om du angav en lösenfras när du skapade nyckelparet anger du lösenfrasen när du uppmanas att göra det under inloggningsprocessen. Den virtuella datorn läggs till i filen ~/.ssh/known_hosts och du uppmanas inte att ansluta igen förrän antingen den offentliga nyckeln på den virtuella Azure-datorn ändras eller om servernamnet tas bort från ~/.ssh/known_hosts.

Om den virtuella datorn använder just-in-time-åtkomstprincipen måste du begära åtkomst innan du kan ansluta till den virtuella datorn. Mer information om just-in-time-principen finns i Hantera åtkomst till virtuella datorer med just-in-time-principen.

Nästa steg