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 följande nyckeltyper:
- SSH-protokoll 2 (SSH-2) RSA (Rivest, Shamir, Adleman) med en minsta längd på 2 048 bitar
- ED25519 nycklar med en fast längd på 256 bitar
Andra nyckelformat som Elliptic-curve Diffie-Hellman (ECDH) och Elliptic Curve Digital Signature Algorithm (ECDSA) stöds för närvarande 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 -f ~/.ssh/id_rsa.pem
Följande kommando skapar ett SSH-nyckelpar med ED25519 kryptering med en fast längd på 256 bitar:
ssh-keygen -m PEM -t ed25519 -f ~/.ssh/id_ed25519.pem
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
Kommentar
az sshkey create command deafults to RSA encryption and cannot be use to generate ED25519 key pairs, however you can create a ED25519 key pair using ssh-keygen as described above and then use that public key to create a VM.
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 mallarna Azure Portal, Azure CLI, Azure Resource Manager eller andra metoder:
- Skapa en virtuell Linux-dator med Azure Portal
- 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 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:
RSA-nyckelpar
cat ~/.ssh/id_rsa.pub
Ett typiskt offentligt RSA-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
ED25519 nyckelpar
cat ~/.ssh/id_ed25519.pub
Ett typiskt ED25519 offentliga nyckelvärde ser ut som i det här exemplet:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILRjWGWLeiUQ3U9fNnCsNpXIyACpD/Jbm09OZGsz3DIM username@domainname
Om du kopierar och klistrar in innehållet i den offentliga nyckelfilen som ska användas i Azure Portal 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 under ~/.ssh/
katalogen, 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}'
.
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
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 läsa Felsöka SSH-anslutningar till en virtuell Azure Linux-dator.