Snabbsteg: Skapa och använda ett offentligt/privat SSH-nyckelpar för virtuella Linux-datorer i Azure
Gäller för: ✔️ Virtuella Linux-datorer:heavy_check_mark: Flexibla skalningsuppsättningar
Med ett SSH-nyckelpar (Secure Shell) kan du skapa virtuella datorer (VM) i Azure som använder SSH-nycklar för autentisering. Den här artikeln visar hur du snabbt genererar och använder ett offentligt/privat SSH-nyckelfilpar för virtuella Linux-datorer. Du kan utföra de här stegen med Azure Cloud Shell, en macOS eller en Linux-värd.
Information om hur du felsöker problem med SSH finns i Felsöka SSH-anslutningar till en virtuell Azure Linux-dator som misslyckas, fel uppstår eller avvisas.
Anteckning
Virtuella datorer som skapas med SSH-nycklar konfigureras som standard med lösenord inaktiverade, vilket avsevärt ökar svårare att gissa nyckelsökningsattacker.
Mer bakgrundsinformation och exempel finns i Detaljerade steg för att skapa SSH-nyckelpar.
Ytterligare sätt att generera och använda SSH-nycklar på en Windows-dator finns i Använda SSH-nycklarmed Windows på Azure .
SSH-filformat som stöds
Azure stöder för närvarande SSH-protokoll 2 (SSH-2) RSA-offentliga nyckel par med en minsta längd på 2048 bitar. Andra nyckel format som ED25519 och ECDSA stöds inte.
Skapa ett SSH-nyckelpar
Använd kommandot ssh-keygen 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 att få å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 bitlängd på 4 096:
ssh-keygen -m PEM -t rsa -b 4096
Om du använder Azure CLI för att skapa den virtuella datorn med kommandot az vm create kan du även generera 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 alternativet används genereras inte ett nytt nyckelpar, utan i stället används --generate-ssh-keys det befintliga nyckelparet. I följande kommando ersätter du VMname och RGname med dina egna värden:
az vm create --name VMname --resource-group RGname --image UbuntuLTS --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 Portal, Azure CLI, Azure Resource Manager-mallar eller andra metoder:
- Skapa en virtuell Linux-dator med Azure-portalen
- Skapa en virtuell Linux-dator med Azure CLI
- Skapa en virtuell Linux-dator med hjälp av en Azure-mall
Om du inte är bekant med formatet för en offentlig SSH-nyckel kan du visa den offentliga nyckeln med följande kommando och ersätta med sökvägen och filnamnet för din egen offentliga nyckelfil om det cat ~/.ssh/id_rsa.pub behövs:
cat ~/.ssh/id_rsa.pub
Ett typiskt värde för offentlig nyckel 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 Portal- eller Resource Manager-mallen ska du se till att du inte kopierar några avslutande blanksteg. Om du vill kopiera en offentlig nyckel i macOS kan du skicka filen med den offentliga nyckeln till pbcopy . På samma sätt kan du i Linux skicka filen med den offentliga nyckeln till program som xclip .
Den offentliga nyckeln som du placerar på den virtuella Linux-datorn i Azure lagras som standard i ~/.ssh/id_rsa.pub, såvida du inte har angett 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 --ssh-key-values alternativet . 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 UbuntuLTS \
--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 blankstegsavgränsad lista, så --ssh-key-values sshkey-desktop.pub sshkey-laptop.pub här.
SSH till den virtuella datorn
Med den offentliga nyckeln distribuerad på den virtuella Azure-datorn och den privata nyckeln i det lokala systemet, SSH till den virtuella datorn med hjälp av IP-adressen eller DNS-namnet för den virtuella datorn. I följande kommando ersätter du azureuser 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 lockande att helt enkelt acceptera det fingeravtryck som presenteras, men den metoden gör dig utsatt 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ärdavtryck via portalen använder du Kör kommando för att köra kommandot ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}' .
Om du vill köra kommandot med HJÄLP av CLI använder du az vm run-command invoke .
Om du angav en lösenfras när du skapade nyckelparet anger du den 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 den offentliga nyckeln på den virtuella Azure-datorn ändras eller 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
Mer information om hur du arbetar med SSH-nyckelpar finns i Detaljerade steg för att skapa och hantera SSH-nyckelpar.
Om du har problem med SSH-anslutningar till virtuella Azure-datorer kan du gå till Felsöka SSH-anslutningar till en virtuell Azure Linux-dator.