Felsöka SSH-anslutningar till en virtuell Azure Linux-dator som misslyckas, fel ut eller nekas

Den här artikeln hjälper dig att hitta och korrigera de problem som uppstår på grund av SSH-fel (Secure Shell), SSH-anslutningsfel eller SSH nekas när du försöker ansluta till en virtuell Linux-dator (VM). Du kan använda Azure Portal, Azure CLI eller VM Access Extension för Linux för att felsöka och lösa anslutningsproblem.

Obs!

Var den här artikeln användbar? Dina indata är viktiga för oss. Använd knappen Feedback på den här sidan för att berätta hur bra den här artikeln fungerade för dig eller hur vi kan förbättra den.

Snabb felsökningssteg

Efter varje felsökningssteg kan du prova att återansluta till den virtuella datorn.

  1. Återställ SSH-konfigurationen.
  2. Återställ autentiseringsuppgifterna för användaren.
  3. Kontrollera att reglerna för nätverkssäkerhetsgruppen tillåter SSH-trafik och rolltilldelning.
    • Kontrollera att det finns en regel för nätverkssäkerhetsgrupp för att tillåta SSH-trafik (som standard TCP-port 22).
    • Du kan inte använda omdirigering/mappning av portar utan att använda en Azure-lastbalanserare.
    • Om du använder Microsoft Entra ID för att hantera SSH-inloggningar måste användaren tilldelas rollen Virtuell datoradministratörsinloggning eller Användarinloggning för virtuell dator i resursgruppen som innehåller den virtuella datorn och dess associerade resurser. Annars tas felet "Behörighet nekad (publickey)" emot. Mer information finns i Konfigurera rolltilldelningar för den virtuella dator som använder Microsoft Entra inloggning.
  4. Kontrollera den virtuella datorns resurshälsa.
    • Se till att den virtuella datorn rapporterar som felfri.
    • Om du har aktiverat startdiagnostik kontrollerar du att den virtuella datorn inte rapporterar startfel i loggarna.
  5. Starta om den virtuella datorn.
  6. Distribuera om den virtuella datorn.

Fortsätt läsa för mer detaljerade felsökningssteg och förklaringar.

Tillgängliga metoder för att felsöka SSH-anslutningsproblem

Du kan återställa autentiseringsuppgifter, SSH-konfiguration eller felsöka SSH-tjänstens status med någon av följande metoder:

  • Azure Portal – bra om du snabbt behöver återställa SSH-konfigurationen eller SSH-nyckeln och inte har Azure-verktygen installerade.
  • Seriekonsol för virtuella Azure-datorer – seriekonsolen för virtuella datorer fungerar oavsett SSH-konfigurationen och ger dig en interaktiv konsol till den virtuella datorn. I själva verket är "can't SSH"-situationer specifikt vad seriekonsolen utformades för att hjälpa till att lösa. Mer information finns nedan.
  • Använd Kör kommando via Azure Portal – Du kan köra grundläggande kommandon med hjälp av funktionen Kör kommando via Azure Portal. Utdata returneras till portalen.
  • Azure CLI – om du redan är på kommandoraden återställer du snabbt SSH-konfigurationen eller autentiseringsuppgifterna. Om du arbetar med en klassisk virtuell dator kan du använda klassiska Azure CLI.
  • Azure VMAccessForLinux-tillägget – skapa och återanvända json-definitionsfiler för att återställa SSH-konfigurationen eller användarautentiseringsuppgifterna.

Efter varje felsökningssteg kan du försöka ansluta till den virtuella datorn igen. Om du fortfarande inte kan ansluta kan du prova nästa steg.

Använd Azure Portal

Med Azure Portal kan du snabbt återställa SSH-konfigurationen eller användarautentiseringsuppgifterna utan att installera några verktyg på den lokala datorn.

Börja genom att välja den virtuella datorn i Azure Portal. Rulla ned till hjälpavsnittet och välj Återställ lösenord som i följande exempel:

Skärmbild för att återställa S S H-konfigurationen eller autentiseringsuppgifterna i Azure Portal.

Återställa SSH-konfigurationen

Om du vill återställa SSH-konfigurationen väljer du Reset configuration only i avsnittet Läge som i föregående skärmbild och väljer sedan Uppdatera. När den här åtgärden har slutförts försöker du komma åt den virtuella datorn igen.

Återställa SSH-autentiseringsuppgifter för en användare

Om du vill återställa autentiseringsuppgifterna för en befintlig användare väljer du antingen Reset SSH public key eller Reset password i avsnittet Läge som i föregående skärmbild. Ange användarnamnet och en SSH-nyckel eller ett nytt lösenord och välj sedan Uppdatera.

Du kan också skapa en användare med sudo-behörigheter på den virtuella datorn från den här menyn. Ange ett nytt användarnamn och associerat lösenord eller en SSH-nyckel och välj sedan Uppdatera.

Kontrollera säkerhetsregler

Använd KONTROLLERA IP-flöde för att bekräfta om en regel i en nätverkssäkerhetsgrupp blockerar trafik till eller från en virtuell dator. Du kan också granska gällande regler för säkerhetsgrupper för att säkerställa att den inkommande NSG-regeln "Tillåt" finns och är prioriterad för SSH-porten (standard 22). Mer information finns i Använda effektiva säkerhetsregler för att felsöka trafikflödet för virtuella datorer.

Kontrollera routning

Använd Network Watcher next hop-funktionen för att bekräfta att en väg inte hindrar trafik från att dirigeras till eller från en virtuell dator. Du kan också granska effektiva vägar för att se alla effektiva vägar för ett nätverksgränssnitt. Mer information finns i Använda effektiva vägar för att felsöka trafikflödet för virtuella datorer.

Använda seriekonsolen för virtuella Azure-datorer

Seriekonsolen för virtuella Azure-datorer ger åtkomst till en textbaserad konsol för virtuella Linux-datorer. Du kan använda -konsolen för att felsöka din SSH-anslutning i ett interaktivt gränssnitt. Kontrollera att du uppfyller kraven för att använda seriekonsolen och prova kommandona nedan för att ytterligare felsöka SSH-anslutningen.

Kontrollera att SSH-tjänsten körs

Om du vill kontrollera tjänststatusen använder du följande kommando, som är tillgängligt i de flesta aktuella Linux-distributioner:

sudo systemctl status sshd.service

Se följande utdataexempel. Kontrollera tjänststatusen Active från raden i utdata. Utdata visar också porten och IP-adresserna som lyssnar på.

user@hostname:~$ sudo systemctl status sshd.service
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-06-23 17:44:36 UTC; 1 day 3h ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 829 (sshd)
      Tasks: 1 (limit: 9535)
     Memory: 5.1M
     CGroup: /system.slice/ssh.service
             └─829 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

Jun 23 17:44:35 ubu2004 systemd[1]: Starting OpenBSD Secure Shell server...
Jun 23 17:44:36 ubu2004 sshd[829]: Server listening on 0.0.0.0 port 22.
Jun 23 17:44:36 ubu2004 sshd[829]: Server listening on :: port 22.
Jun 23 17:44:36 ubu2004 systemd[1]: Started OpenBSD Secure Shell server.

Om det här kommandot inte är tillgängligt eller returnerar oväntade resultat använder du andra tillgängliga kommandon. Du kan använda ss kommandot antingen som rot eller via sudo kommandot för att kontrollera om SSH-tjänsten körs på den virtuella datorn.

I följande exempel visas hur du ss kör kommandot via sudo:

sudo ss --listen --tcp --process --numeric | grep sshd

Obs!

Vi rekommenderar ss kommandot eftersom netstat kommandot är inaktuellt och inte alltid tillgängligt i moderna distributioner.

Om det finns några utdata är SSH igång. Se följande utdataexempel:

$ sudo ss -ltpn | grep sshd
LISTEN    0         128                0.0.0.0:22               0.0.0.0:*        users:(("sshd",pid=829,fd=3))
LISTEN    0         128                   [::]:22                  [::]:*        users:(("sshd",pid=829,fd=4))

-ltpn är argumentens --listen --tcp --process –numeric förkortade form. Utdata visar att SSHD-processen 829 lyssnar på både IPv4- och IPv6-adresser.

Kontrollera vilken port SSH körs på

Kommandoutdata ovan visar att SSHD-processen lyssnar på port 22. När SSHD-processen har konfigurerats för att köras på en annan port visas porten i utdata. Kontrollera om ändringen gjordes i standardkonfigurationsfilen genom att granska standardkonfigurationsfilen ,etc/ssh/sshd_config med något av följande kommandon:

grep -i port /etc/ssh/sshd_config

eller

grep -i listen /etc/ssh/sshd_config

Utdata ser ut så här:

Port 22

Alla rader som börjar med # i utdata är en kommentar och kan ignoreras på ett säkert sätt. Om inget returneras, eller om raderna är kommentarer, används standardkonfigurationen. Standardkonfigurationen är att lyssna på alla IP-adresser i systemet, på port 22.

Använda Kör kommando via Azure Portal

Om du inte kan köra kommandon via seriekonsolen, till exempel när endast SSH-nycklar används för autentisering, kan funktionen Kör kommando användas för att utfärda kommandon och visa utdata. Alla kommandon som tidigare kördes från seriekonsolen kan köras icke-interaktivt i avsnittet Kör kommando i Azure Portal. Utdata returneras till Azure Portal. Du behöver inte använda sudo för att köra kommandon i kontexten Kör kommando.

Använda Azure CLI

Om du inte redan har gjort det installerar du den senaste Azure CLI och loggar in på ett Azure-konto med az login.

Om du har skapat och laddat upp en anpassad Linux-disk avbildning kontrollerar du att Microsoft Azure Linux Agent version 2.0.5 eller senare är installerad. För virtuella datorer som skapats med galleriavbildningar är det här åtkomsttillägget redan installerat och konfigurerat åt dig.

Återställa SSH-konfiguration

Du kan först försöka återställa SSH-konfigurationen till standardvärden och starta om SSH-servern på den virtuella datorn. Detta ändrar inte användarnamnet, lösenordet eller SSH-nycklarna. I följande exempel används az vm user reset-ssh för att återställa SSH-konfigurationen på den virtuella datorn med namnet myVM i myResourceGroup. Använd dina egna värden på följande sätt:

az vm user reset-ssh --resource-group myResourceGroup --name myVM

Återställa SSH-autentiseringsuppgifter för en användare

I följande exempel används az vm user update för att återställa autentiseringsuppgifterna för myUsername till det värde som anges i myPasswordpå den virtuella datorn med namnet myVM i myResourceGroup. Använd dina egna värden på följande sätt:

az vm user update --resource-group myResourceGroup --name myVM \
     --username myUsername --password myPassword

Om du använder SSH-nyckelautentisering kan du återställa SSH-nyckeln för en viss användare. I följande exempel används az vm access set-linux-user för att uppdatera SSH-nyckeln som lagras i ~/.ssh/id_rsa.pub för användaren med namnet myUsername, på den virtuella datorn med namnet myVM i myResourceGroup. Använd dina egna värden på följande sätt:

az vm user update --resource-group myResourceGroup --name myVM \
    --username myUsername --ssh-key-value ~/.ssh/id_rsa.pub

Använda VMAccess-tillägget

Vm-åtkomsttillägget för Linux läser i en json-fil som definierar åtgärder som ska utföras. Dessa åtgärder omfattar återställning av SSHD, återställning av en SSH-nyckel eller tillägg av en användare. Du använder fortfarande Azure CLI för att anropa VMAccess-tillägget, men du kan återanvända json-filerna på flera virtuella datorer om du vill. Med den här metoden kan du skapa en lagringsplats med json-filer som sedan kan anropas för givna scenarier.

Återställa SSHD

Skapa en fil med namnet settings.json med följande innehåll:

{
    "reset_ssh":True
}

Med hjälp av Azure CLI anropar VMAccessForLinux du sedan tillägget för att återställa SSHD-anslutningen genom att ange din json-fil. I följande exempel används az vm extension set för att återställa SSHD på den virtuella datorn med namnet myVM i myResourceGroup. Använd dina egna värden på följande sätt:

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

Återställa SSH-autentiseringsuppgifter för en användare

Om SSHD verkar fungera korrekt kan du återställa autentiseringsuppgifterna för en giver-användare. Om du vill återställa lösenordet för en användare skapar du en fil med namnet settings.json. I följande exempel återställs autentiseringsuppgifterna för myUsername till värdet som anges i myPassword. Ange följande rader i settings.json filen med dina egna värden:

{
    "username":"myUsername", "password":"myPassword"
}

Om du vill återställa SSH-nyckeln för en användare skapar du först en fil med namnet settings.json. I följande exempel återställs autentiseringsuppgifterna för myUsername till det värde som anges i myPasswordpå den virtuella datorn med namnet myVM i myResourceGroup. Ange följande rader i settings.json filen med dina egna värden:

{
    "username":"myUsername", "ssh_key":"mySSHKey"
}

När du har skapat json-filen använder du Azure CLI för att anropa VMAccessForLinux tillägget för att återställa autentiseringsuppgifterna för SSH-användaren genom att ange json-filen. I följande exempel återställs autentiseringsuppgifterna på den virtuella datorn med namnet myVM i myResourceGroup. Använd dina egna värden på följande sätt:

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

Använda klassiska Azure CLI

Om du inte redan har gjort det installerar du klassiska Azure CLI och ansluter till din Azure-prenumeration. Kontrollera att du använder Resource Manager läge på följande sätt:

azure config mode arm

Om du har skapat och laddat upp en anpassad Linux-disk avbildning kontrollerar du att Microsoft Azure Linux Agent version 2.0.5 eller senare är installerad. För virtuella datorer som skapats med galleriavbildningar är det här åtkomsttillägget redan installerat och konfigurerat åt dig.

Återställa SSH-konfiguration

Själva SSHD-konfigurationen kan vara felkonfigurerad eller så påträffade tjänsten ett fel. Du kan återställa SSHD för att kontrollera att själva SSH-konfigurationen är giltig. Återställning av SSHD bör vara det första felsökningssteget du tar.

I följande exempel återställs SSHD på en virtuell dator med namnet myVM i resursgruppen med namnet myResourceGroup. Använd dina egna namn på virtuella datorer och resursgrupper på följande sätt:

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --reset-ssh

Återställa SSH-autentiseringsuppgifter för en användare

Om SSHD verkar fungera korrekt kan du återställa lösenordet för en giver-användare. I följande exempel återställs autentiseringsuppgifterna för myUsername till det värde som anges i myPasswordpå den virtuella datorn med namnet myVM i myResourceGroup. Använd dina egna värden på följande sätt:

azure vm reset-access --resource-group myResourceGroup --name myVM \
     --user-name myUsername --password myPassword

Om du använder SSH-nyckelautentisering kan du återställa SSH-nyckeln för en viss användare. I följande exempel uppdateras SSH-nyckeln som lagras i ~/.ssh/id_rsa.pub för användaren med namnet myUsername, på den virtuella datorn med namnet myVM i myResourceGroup. Använd dina egna värden på följande sätt:

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --user-name myUsername --ssh-key-file ~/.ssh/id_rsa.pub

Starta om en virtuell dator

Om du har återställt SSH-konfigurationen och autentiseringsuppgifterna för användaren, eller om det uppstod ett fel när du gjorde det, kan du prova att starta om den virtuella datorn för att åtgärda underliggande beräkningsproblem.

Azure Portal

Om du vill starta om en virtuell dator med hjälp av Azure Portal väljer du den virtuella datorn och sedan Starta om som i följande exempel:

Skärmbild för att starta om en virtuell dator i Azure Portal.

Azure CLI

I följande exempel används az vm restart för att starta om den virtuella datorn med namnet myVM i resursgruppen med namnet myResourceGroup. Använd dina egna värden på följande sätt:

az vm restart --resource-group myResourceGroup --name myVM

Klassiska Azure CLI

Viktigt

Klassiska virtuella datorer dras tillbaka den 1 september 2023

Om du använder IaaS-resurser från ASM slutför du migreringen senast den 1 september 2023. Vi rekommenderar att du gör bytet tidigare för att dra nytta av de många funktionsförbättringarna i Azure Resource Manager.

Mer information finns i Migrera dina IaaS-resurser till Azure Resource Manager senast den 1 september 2023.

I följande exempel startas den virtuella datorn med namnet myVM i resursgruppen med namnet myResourceGroup. Använd dina egna värden på följande sätt:

azure vm restart --resource-group myResourceGroup --name myVM

Distribuera om en virtuell dator

Du kan distribuera om en virtuell dator till en annan nod i Azure, vilket kan åtgärda eventuella underliggande nätverksproblem. Information om hur du distribuerar om en virtuell dator finns i Distribuera om den virtuella datorn till en ny Azure-nod.

Obs!

När den här åtgärden är klar går tillfälliga diskdata förlorade och dynamiska IP-adresser som är associerade med den virtuella datorn uppdateras.

Azure Portal

Om du vill distribuera om en virtuell dator med hjälp av Azure Portal väljer du den virtuella datorn och rullar ned till hjälpavsnittet. Välj Omdistribuera som i följande exempel:

Skärmbild för att distribuera om en virtuell dator i Azure Portal.

Azure CLI

I följande exempel används az vm redeploy för att distribuera om den virtuella datorn med namnet myVM i resursgruppen med namnet myResourceGroup. Använd dina egna värden på följande sätt:

az vm redeploy --resource-group myResourceGroup --name myVM

Klassiska Azure CLI

I följande exempel distribueras den virtuella datorn med namnet myVM i resursgruppen med namnet myResourceGroup. Använd dina egna värden på följande sätt:

azure vm redeploy --resource-group myResourceGroup --name myVM

Virtuella datorer som skapats med hjälp av den klassiska distributionsmodellen

Viktigt

Klassiska virtuella datorer dras tillbaka den 1 september 2023

Om du använder IaaS-resurser från ASM slutför du migreringen senast den 1 september 2023. Vi rekommenderar att du gör bytet tidigare för att dra nytta av de många funktionsförbättringarna i Azure Resource Manager.

Mer information finns i Migrera dina IaaS-resurser till Azure Resource Manager senast den 1 september 2023.

Prova de här stegen för att lösa de vanligaste SSH-anslutningsfelen för virtuella datorer som har skapats med hjälp av den klassiska distributionsmodellen. Efter varje steg kan du prova att återansluta till den virtuella datorn.

  • Återställ fjärråtkomst från Azure Portal. På Azure Portal väljer du den virtuella datorn och sedan Återställ fjärranslutning....

  • Starta om den virtuella datorn. På Azure Portal väljer du den virtuella datorn och sedan Starta om.

  • Distribuera om den virtuella datorn till en ny Azure-nod. Information om hur du distribuerar om en virtuell dator finns i Distribuera om den virtuella datorn till en ny Azure-nod.

    När den här åtgärden är klar går tillfälliga diskdata förlorade och dynamiska IP-adresser som är associerade med den virtuella datorn uppdateras.

  • Följ anvisningarna i Återställa ett lösenord eller SSH för Linux-baserade virtuella datorer för att:

    • Återställ lösenordet eller SSH-nyckeln.
    • Skapa ett sudo-användarkonto .
    • Återställ SSH-konfigurationen.
  • Kontrollera den virtuella datorns resurshälsa för eventuella plattformsproblem.
    Välj den virtuella datorn och rulla ned Inställningar>Kontrollera hälsotillstånd.

Ytterligare resurser

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.