Använda SSH-nyckelautentisering

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Använd SSH på macOS, Linux eller Windows för att autentisera dig säkert mot Git-repositorier i Azure-lagringsplatser i Azure DevOps.

Den här artikeln visar hur du skapar ett RSA-nyckelpar, lägger till den offentliga nyckeln i din profil och klonar lagringsplatser med hjälp av SSH.

Viktigt!

SSH-URL:er har ändrats, men gamla SSH-URL:er fortsätter att fungera. Om du redan har konfigurerat SSH uppdaterar du fjärr-URL:er till det nya formatet:

Uppdaterade SSH-URL:er börjar med ssh.dev.azure.com. De tidigare URL:erna använder vs-ssh.visualstudio.com.

  • Kontrollera vilka fjärranslutna som använder SSH. Kör git remote -v i gränssnittet eller använd en GUI-klient i stället.
  • Besök ditt arkiv via webben och välj Klona.
  • Välj SSH och kopiera den nya SSH-URL:en.
  • I gränssnittet kör git remote set-url <remote name> <new SSH URL> du för varje fjärrlagringsplats som du vill uppdatera. Du kan också använda en GUI-klient för att uppdatera fjärr-URL:erna.

Förutsättningar

Kategori Kravspecifikation
behörigheter Åtkomst till kloning av lagringsplatsen
Politik SSH-autentisering aktiverat
Lokala verktyg Git och en OpenSSH-klient som är tillgängliga från en terminal eller ett gränssnitt
Windows miljö Om du använder Windows, Git för Windows eller en annan miljö där git, sshoch ssh-keygen är tillgängliga
Lokal åtkomst Åtkomst till din lokala .ssh mapp och behörighet att skapa nyckelfiler

Så här fungerar SSH-nyckelautentisering

Autentisering med offentlig SSH-nyckel fungerar med ett asymmetriskt par med genererade krypteringsnycklar. Du delar den offentliga nyckeln med Azure DevOps för att verifiera den första SSH-anslutningen. Skydda den privata nyckeln i systemet.

Konfigurera SSH-nyckelautentisering

Om du vill använda SSH med Azure-lagringsplatser genererar du ett RSA-nyckelpar, lägger till den offentliga nyckeln i din Azure DevOps profil, verifierar serverns fingeravtryck och klonar eller uppdaterar lagringsplatsen för att använda SSH-URL:en.

Om du bara behöver den snabbaste sökvägen slutför du steg 1, steg 2 och steg 3 i ordning och använder sedan endast Felsöka SSH-autentisering om ett kommando misslyckas.

Följande steg omfattar konfiguration av SSH-nyckelautentisering på följande plattformar med hjälp av kommandoraden (kallas shelläven ):

Tips

På Windows använder du Git Credential Manager i stället för SSH.

Steg 1: Skapa dina SSH-nycklar

Anteckning

Om du redan har skapat RSA SSH-nycklar i systemet hoppar du över det här steget och går till Steg 2. Kontrollera detta genom att gå till din hemkatalog och titta i .ssh mappen (%UserProfile%\.ssh\ på Windows eller ~/.ssh/ i Linux, macOS och Windows med Git Bash). Om du ser två filer med namnet id_rsa och id_rsa.pubfortsätter du till steg 2.

Om du vill använda nyckelbaserad autentisering måste du först generera ett offentligt/privat nyckelpar för klienten. OpenSSH kan generera flera nyckeltyper, men Azure DevOps stöder RSA-nycklar för SSH-autentisering.

Anteckning

Azure DevOps stöder RSA-nycklar och använder RSA-SHA2 signaturalgoritmer under autentiseringen. Generera en RSA-nyckel och låt SSH-klienten förhandla om den RSA-SHA2 signatur som stöds när den ansluter.

Om du vill generera ett RSA-nyckelpar för Azure DevOps kör du följande kommando från PowerShell eller ett annat gränssnitt, till exempel bash på klienten:

ssh-keygen -t rsa -b 3072

Utdata från kommandot ska visa följande utdata (var username är ditt användarnamn):

Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\username/.ssh/id_rsa):

Tryck på Retur för att acceptera standardvärdet eller ange en sökväg och/eller filnamn där du vill att dina nycklar ska genereras. Nu uppmanas du att använda en lösenfras för att kryptera dina privata nyckelfiler. Lösenfrasen kan vara tom men rekommenderas inte. Lösenfrasen lägger till ytterligare ett skyddslager för din privata nyckel om filen exponeras.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\username/.ssh/id_rsa.
Your public key has been saved in C:\Users\username/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:FHK6WjcUkcfQjdorarzlak1Ob/x7AmqQmmx5ryYYV+8 username@LOCAL-HOSTNAME
The key's randomart image is:
+---[RSA 3072]----+
|      . ** o     |
|       +.o= .    |
|      . o+       |
|      .+. .      |
|     .ooS  .     |
|  . .oo.=.o      |
|   =.= O.= .     |
|  . B BoE + . .  |
|   . *+*o. .o+   |
+----[SHA256]-----+

Nu har du ett offentligt/privat RSA-nyckelpar på den plats som du angav. Filerna .pub är offentliga nycklar och filer utan tillägg är privata nycklar:

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        10/11/2022   6:29 PM           2610 id_rsa
-a----        10/11/2022   6:29 PM            578 id_rsa.pub

Viktigt!

Dela aldrig innehållet i din privata nyckel. Om den privata nyckeln komprometteras kan angripare använda den för att lura servrar att tro att anslutningen kommer från dig. Privata nyckelfiler motsvarar ett lösenord och bör skyddas på samma sätt.

Steg 2: Lägg till den offentliga nyckeln i Azure DevOps

Associera den offentliga nyckeln som genererades i föregående steg med ditt användar-ID.

Anteckning

Den offentliga SSH-nyckeln är associerad med din användarprofil. I de flesta fall kan du använda en nyckel mellan organisationer för samma identitet. Lägg bara till en separat nyckel när du använder en annan identitet eller ett annat konto.

  1. Öppna säkerhetsinställningarna genom att bläddra till webbportalen och välja ikonen bredvid avataren längst upp till höger i användargränssnittet. Välj offentliga SSH-nycklar på menyn som visas.

    Screenshot som visar menyalternativet för offentliga SSH-nycklar och användarens avatar som valts i Azure DevOps.

  2. Välj + Ny nyckel.

    Skärmbild som visar åtkomst till Säkerhetskonfiguration i Azure DevOps.

  3. Kopiera innehållet i den offentliga nyckeln (till exempel id_rsa.pub) som du genererade till fältet Offentliga nyckeldata .

    Viktigt!

    Undvik att lägga till extra blanksteg eller radbrytningar i mitten av nyckelvärdet, eftersom de kan göra nyckeln ogiltig. Om inklistring medför formateringsartefakter, ta bort dem innan du sparar.

    Skärmbild som visar hur du konfigurerar en offentlig nyckel i Azure DevOps.

  4. Ge nyckeln en användbar beskrivning (den här beskrivningen visas på sidan offentliga SSH-nycklar för din profil) så att du kan komma ihåg den senare. Välj Spara för att lagra den offentliga nyckeln. När du har sparat den kan du inte ändra nyckeln. Du kan ta bort nyckeln eller skapa en ny post för en annan nyckel. Det finns inga begränsningar för hur många nycklar du kan lägga till i din användarprofil.

    Anteckning

    Organisationsprincip kan framtvinga att SSH-nyckeln upphör att gälla. Mer information finns i Ändra programanslutning och säkerhetsprinciper för din organisation.

  5. På översiktssidan för SSH Public Keys visas serverns fingeravtryck. Anteckna SHA256-fingeravtrycket som ska användas när du först ansluter till Azure DevOps via SSH.

    Skärmbild av åtkomst till säkerhetskonfiguration i Azure DevOps Services.

  6. Testa anslutningen genom att köra följande kommando:

    ssh -T git@ssh.dev.azure.com
    

    Om du ansluter för första gången bör du få följande utdata:

    The authenticity of host 'ssh.dev.azure.com (<IP>)' can't be established.
    RSA key fingerprint is SHA256:ohD8VZEXGWo6Ez8GSEJQ9WpafgLFsOfLOtGGQCQo6Og.
    This key is not known by any other names
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
    

    Jämför fingeravtrycket med DET SHA256-fingeravtryck som visas på sidan offentliga SSH-nycklar . Fortsätt endast om värdena matchar.

  7. Ange yes för att fortsätta. Om allt är korrekt konfigurerat bör utdata se ut så här:

     Warning: Permanently added 'ssh.dev.azure.com' (RSA) to the list of known hosts.
     remote: Shell access is not supported.
     shell request failed on channel 0
    

    Om inte, se avsnittet om frågor och felsökning.

Steg 3: Klona Git-lagringsplatsen med hjälp av SSH

Anteckning

Information om hur du använder SSH med en lagringsplats som du klonade tidigare med https finns i Hur kan jag börja använda SSH på en lagringsplats där jag för närvarande använder HTTPS?

  1. Kopiera SSH-klonings-URL:en från webbportalen. I det här exemplet är SSH-klon-URL:en för en lagringsplats i en organisation med namnet fabrikam-fiber, vilket anges av den första delen av URL:en efter dev.azure.com.

    Skärmbild som visar Azure-lagringsplatser SSH-klonad URL.

    Anteckning

    Med Azure DevOps Services är formatet för projekt-URL:en dev.azure.com/{your organization}/{your project}. Det tidigare format som refererar till visualstudio.com formatet stöds dock fortfarande. För mer information, se Introduktion till Azure DevOps, Växla befintliga organisationer för att använda det nya domännamnens URL.

  2. Kör git clone från kommandotolken.

    git clone git@ssh.dev.azure.com:v3/fabrikam-fiber/FabrikamFiber/FabrikamFiber
    

    Om du inte använder en SSH-agent uppmanas du att ange lösenfrasen:

    Cloning into 'FabrikamFiber'...
    Enter passphrase for key '/c/Users/username/.ssh/id_rsa':
    remote: Azure Repos
    remote: Found 127 objects to send. (50 ms)
    Receiving objects: 100% (127/127), 56.67 KiB | 2.58 MiB/s, done.
    Resolving deltas: 100% (15/15), done.
    

    Om du i stället uppmanas att verifiera ett fingeravtryck läser du Steg 2: Lägg till den offentliga nyckeln i Azure DevOps igen. Läs avsnittet om frågor och felsökning för andra problem.

Tips

För att få ut mesta möjliga av SSH använder du en SSH-agent för att hantera dina SSH-nycklar. Att konfigurera en agent ligger utanför den här artikelns omfattning.

Använda AI för att arbeta med SSH-autentiserade lagringsplatser

Om du använder Git-lagringsplatser med GitHub Copilot eller Azure DevOps MCP-server kan du använda frågor om naturligt språk för att verifiera SSH-konfigurationen och diagnostisera autentiseringsproblem.

Task Exempelprompt
Kontrollera vilken remote ett repo använder Check whether this repository uses SSH or HTTPS for origin, and show me how to switch it to SSH if needed.
Verifiera SSH-konfigurationen Review my Git remote configuration and explain whether it matches the Azure Repos SSH format.
Diagnostisera ett autentiseringsfel Help me troubleshoot this Azure Repos SSH error: remote: Public key authentication failed.
Kontrollera vilken nyckel SSH använder Explain how to tell which SSH key my client is offering to ssh.dev.azure.com and what to change if it is the wrong one.

Tips

I Visual Studio Code är agentläget användbart för att kontrollera fjärranslutningar, granska SSH-konfigurationen och föreslå nästa felsökningssteg från terminalutdata.

Felsökning och vanliga frågor

Använd följande avsnitt för att hitta problemet som matchar ditt SSH-konfigurationsproblem.

Utgångna eller ogiltiga nycklar

F: Min SSH-nyckel har upphört att gälla. Vad ska jag göra?

A: Följ föregående steg för att skapa och ladda upp en ny SSH-nyckel.

As ett alternativt alternativ kan en Project samlingsadministratör inaktivera principen som verifierar SSH-nyckelns förfallodatum. Som standard aktiveras principen Validera SSH-nyckelns förfallodatum. Mer information finns i SSH-nyckelprinciper.

Du får automatiskt ett meddelande sju dagar tidigare och när din nyckel upphör att gälla. Tillsammans med de här meddelandena ser du följande meddelanden:

remote: Authentication failed: your SSH key has expired. To restore access, visit https://aka.ms/ado-ssh-public-key-expired for guidance.
remote: Public key authentication failed.
fatal:  Could not read from remote repository.

Vanliga anslutningsfel

S: Du kan se något av följande varningsmeddelanden:

ssh-rsa is about to be deprecated and your request has been throttled. Please use rsa-sha2-256 or rsa-sha2-512 instead. Your session will continue automatically. For more details see https://devblogs.microsoft.com/devops/ssh-rsa-deprecation.

Eller

You’re using ssh-rsa that is about to be deprecated and your request has been blocked intentionally. Any SSH session using ssh-rsa is subject to brown out (failure during random time periods). Please use rsa-sha2-256 or rsa-sha2-512 instead. For more details see https://devblogs.microsoft.com/devops/ssh-rsa-deprecation.

Om du har ändrat SSH-konfigurationen för att nedgradera säkerhetsinställningarna för Azure DevOps genom att lägga till följande i filen ~/.ssh/config (%UserProfile%\.ssh\config på Windows) :

Host ssh.dev.azure.com vs-ssh.visualstudio.com
  HostkeyAlgorithms +ssh-rsa

Ta bort de här raderna nu och se till att rsa-sha2-256 de rsa-sha2-512 är tillåtna.

Mer information finns i blogginlägget.

Den här reparationen är den kanoniska korrigeringen för inaktuella ssh-rsa varningar och fel som inte stöds ssh-rsa . Använd det som ditt första steg för dessa scenarier.

F: SSH kan inte upprätta en anslutning. Vad ska jag göra?

A: Du kan stöta på flera olika problem:

  • Användning av ssh-rsa som inte stöds

    You’re using ssh-rsa that is unsupported. Please use rsa-sha2-256 or rsa-sha2-512 instead. For more details see https://devblogs.microsoft.com/devops/ssh-rsa-deprecation.
    

    Använd samma åtgärd som beskrivs i föregående fråga om ssh-rsa-varningar: ta bort eventuella åsidosättningar med HostkeyAlgorithms +ssh-rsa och använd rsa-sha2-256 och/eller rsa-sha2-512.

  • Ingen matchande värdnyckel

    Det här problemet bör inte inträffa på Azure DevOps Service eller på nyare Azure DevOps Server versioner som nämns i blog post.

    Unable to negotiate with <IP> port 22: no matching host key type found. Their offer: ssh-rsa
    

    Ändra din SSH-konfiguration för att nedgradera säkerhetsinställningarna för Azure DevOps genom att lägga till följande i filen ~/.ssh/config (%UserProfile%\.ssh\config på Windows) :

    Host ssh.dev.azure.com vs-ssh.visualstudio.com
       HostkeyAlgorithms +ssh-rsa
    

    Använd endast den här lösningen för äldre kompatibilitetsscenarier, vanligtvis för äldre Azure DevOps Server konfigurationer med egen värd. För Azure DevOps Services behåller du säkra standardvärden och undviker beständiga ssh-rsa åsidosättningar.

    Viktigt!

    OpenSSH avfärdade algoritm för signatur av offentlig ssh-rsa nyckel i version 8.2 och inaktiverade den som standard i version 8.8.

  • Ingen matchande MAC-adress

    Unable to negotiate with <IP> port 22: no matching MAC found. Their offer: hmac-sha2-256,hmac-sha2-512
    

    Ändra din SSH-konfiguration för att nedgradera säkerhetsinställningarna för Azure DevOps genom att lägga till följande i filen ~/.ssh/config (%UserProfile%\.ssh\config på Windows) :

    Host ssh.dev.azure.com vs-ssh.visualstudio.com
       MACs +hmac-sha2-512,+hmac-sha2-256
    
  • Ingen matchande nyckelutbytesmetod

    Unable to negotiate with <IP> 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256
    

    Ändra din SSH-konfiguration för att nedgradera säkerhetsinställningarna för Azure DevOps genom att lägga till följande i filen ~/.ssh/config (%UserProfile%\.ssh\config på Windows) :

    Host ssh.dev.azure.com vs-ssh.visualstudio.com
       KexAlgorithms +diffie-hellman-group-exchange-sha256,+diffie-hellman-group14-sha1,+diffie-hellman-group1-sha1
    

    Viktigt!

    Nyckelutbytesalgoritmen diffie-hellman-group1-sha1 är inaktiverad som standard i version 6.9 av OpenSSH och diffie-hellman-group14-sha1 i version 8.2.

Tips

För lokala instanser av Azure DevOps Server använder du lämpligt värdnamn på raden i Host stället för ssh.dev.azure.com eller vs-ssh.visualstudio.com.

Problem med SSH-agenten och lösenfrasen

F: SSH-agenten körs inte eller så läses inte min nyckel in. Vad ska jag göra?

A: Om nyckeln finns men SSH fortfarande frågar efter en lösenfras varje gång, eller om kloningen misslyckas när nyckeln har skapats, kontrollerar du om SSH-agenten körs och om nyckeln har lästs in.

Använd följande kommando för att se vilka identiteter agenten för närvarande har läst in:

ssh-add -l

Om utdata säger att agenten inte har några identiteter lägger du till din privata nyckel i agenten:

ssh-add ~/.ssh/id_rsa

Om du använder PowerShell med den inbyggda OpenSSH-agenten ssh-agent på Windows kontrollerar du att tjänsten körs innan du lägger till nyckeln. Om du använder Git Bash eller en annan SSH-klient kan du läsa klientens dokumentation för att starta agenten och läsa in nycklar.

Om du föredrar att inte använda en agent kan SSH fortfarande fungera, men du uppmanas att ange nyckellösenfrasen oftare.

F: Hur kan jag få Git att komma ihåg lösenfrasen för min nyckel?

A: Använd en SSH-agent. Linux, macOS och Windows (från och med Windows 10 (version 1809) eller genom att använda Git för Windows med Git Bash) levereras alla med en SSH-agent. SSH-agenten kan lagra dina SSH-nycklar i cacheminnet för återanvändning. Mer information om hur du använder den finns i SSH-leverantörens handbok.

F: Jag använder PuTTY som min SSH-klient och genererade mina nycklar med PuTTYgen. Kan jag använda dessa nycklar med Azure DevOps Services?

S: Ja. Läs in den privata nyckeln med PuTTYgen, gå till menyn Konverteringar och välj Exportera OpenSSH-nyckel. Spara filen med den privata nyckeln och följ sedan den senare frågan i den här artikeln om hur du använder en nondefault-nyckelplats. Kopiera din offentliga nyckel direkt från PuTTYgen-fönstret och klistra in i fältet Nyckeldata i dina säkerhetsinställningar.

F: Hur kan jag kontrollera att den offentliga nyckeln jag laddade upp är samma nyckel som min lokala nyckel?

S: Kontrollera fingeravtrycket för den offentliga nyckel som du laddade upp genom att jämföra det med det som visas i din profil. Kör följande ssh-keygen kommando mot den offentliga nyckeln med hjälp av kommandoraden. Du måste ändra sökvägen och filnamnet för den offentliga nyckeln om du inte använder standardinställningarna.

Anteckning

Föredrar SHA-256 fingeravtryck. Använd endast MD5 när du behöver jämföra med ett äldre fingeravtrycksformat.

ssh-keygen -l -E md5 -f <path_to_your_public_key>
ssh-keygen -l -E sha256 -f <path_to_your_public_key>

Jämför sedan signaturen med den i din profil. Den här kontrollen är användbar om du har anslutningsproblem eller har problem med att felaktigt klistra in den offentliga nyckeln i fältet Nyckeldata när du lägger till nyckeln i Azure DevOps.

F: Hur kan jag börja använda SSH på en lagringsplats där jag för närvarande använder HTTPS?

A: Uppdatera fjärren origin i Git för att ändra från en HTTPS till SSH-URL. När du har hämtat url:en för SSH-klonen kör du följande kommando:

git remote set-url origin <SSH URL to your repository>

Git-kommandon som kommer åt fjärren som heter origin använder SSH.

Hantera flera nycklar och organisationer

F: Jag använder Git LFS med Azure DevOps Services och jag får fel när jag hämtar filer som spåras av Git LFS.

A: Azure DevOps Services stöder för närvarande inte LFS via SSH. Använd HTTPS när du ska ansluta till lagringsplatser med Git LFS-spårade filer.

F: Hur kan jag använda en nondefault-nyckelplats, dvs. inte ~/.ssh/id_rsa och ~/.ssh/id_rsa.pub?

S: Utför följande två uppgifter om du vill använda en nyckel som lagras på en annan plats än standard:

  1. Nycklarna måste finnas i en mapp som bara du kan läsa eller redigera. Om mappen har bredare behörigheter använder SSH inte nycklarna.

  2. Du måste till exempel meddela SSH platsen för nyckeln genom att ange den som en "identitet" i SSH-konfigurationen:

    Host ssh.dev.azure.com
      IdentityFile ~/.ssh/id_rsa_azure
      IdentitiesOnly yes
    

Inställningen IdentitiesOnly yes säkerställer att SSH inte använder någon annan tillgänglig identitet för att autentisera. Den här inställningen är särskilt viktig om fler än en identitet är tillgänglig.

F: Jag har flera SSH-nycklar. Hur använder jag rätt SSH-nyckel för Azure DevOps?

S: När du konfigurerar flera nycklar för en SSH-klient försöker klienten vanligtvis autentisera med varje nyckel sekventiellt tills SSH-servern accepterar en.

Den här metoden fungerar dock inte med Azure DevOps på grund av tekniska begränsningar relaterade till SSH-protokollet och strukturen för våra Git SSH-URL:er. Azure DevOps accepterar den första nyckeln som tillhandahålls av klienten under autentiseringen. Om den här nyckeln är ogiltig för den begärda lagringsplatsen misslyckas begäran utan att försöka med några andra tillgängliga nycklar, vilket resulterar i följande fel:

remote: Public key authentication failed.
fatal: Could not read from remote repository.

För Azure DevOps måste du konfigurera SSH för att uttryckligen använda en specifik nyckelfil. Proceduren är densamma som när du använder en nyckel som lagras på en nondefault-plats. Instruera SSH att använda rätt SSH-nyckel för Azure DevOps-värden.

F: Hur använder jag olika SSH-nycklar för olika organisationer på Azure DevOps?

S: Azure DevOps accepterar den första nyckeln som klienten tillhandahåller under autentiseringen. Om nyckeln är ogiltig för den begärda lagringsplatsen misslyckas begäran med följande fel:

remote: Public key authentication failed.
fatal: Could not read from remote repository.

Det här felet beror på att alla Azure DevOps URL:er delar samma värdnamn (ssh.dev.azure.com), vilket gör det omöjligt för SSH att skilja mellan dem som standard. Du kan dock ändra SSH-konfigurationen för att skilja mellan olika organisationer genom att tillhandahålla distinkta nycklar för var och en. Använd värdalias för att skapa separata Host avsnitt i SSH-konfigurationsfilen.

# The settings in each Host section are applied to any Git SSH remote URL with a
# matching hostname.
# Generally:
# * SSH uses the first matching line for each parameter name, e.g. if there's
#   multiple values for a parameter across multiple matching Host sections
# * "IdentitiesOnly yes" prevents keys cached in ssh-agent from being tried before
#   the IdentityFile values we explicitly set.
# * On Windows, ~/.ssh/your_private_key maps to %USERPROFILE%\.ssh\your_private_key,
#   e.g. C:\Users\<username>\.ssh\your_private_key.

# Imagine that we have the following two SSH URLs:
# * git@ssh.dev.azure.com:v3/Fabrikam/Project1/fab_repo
#   * For this, we want to use `fabrikamkey`, so we'll create `devops_fabrikam` as
#     a Host alias and tell SSH to use `fabrikamkey`.
# * git@ssh.dev.azure.com:v3/Contoso/Project2/con_repo
#   * For this, we want to use `contosokey`, so we'll create `devops_contoso` as
#     a Host alias and tell SSH to use `contosokey`.
#
# To set explicit keys for the two host aliases and to tell SSH to use the correct
# actual hostname, add the next two Host sections:
Host devops_fabrikam
  HostName ssh.dev.azure.com
  IdentityFile ~/.ssh/private_key_for_fabrikam
  IdentitiesOnly yes

Host devops_contoso
  HostName ssh.dev.azure.com
  IdentityFile ~/.ssh/private_key_for_contoso
  IdentitiesOnly yes

I stället för att använda de riktiga URL:erna ska du efteråt tala om för Git att du vill använda dessa URL:er för varje lagringsplats som fjärranslutning genom att ersätta värdnamnet i de befintliga fjärrdatorerna med devops_fabrikamdevops_contoso respektive . Till exempel kommer git@ssh.dev.azure.com:v3/Fabrikam/Project1/fab_repo att bli git@devops_fabrikam:v3/Fabrikam/Project1/fab_repo.

Meddelanden och kontoproblem

F: Vilka meddelanden kan jag få om mina SSH-nycklar?

A: Du kan få några meddelanden om dina SSH-nycklar.

  • En ny SSH-nyckel har lagts till i din organisation.

  • En SSH-nyckel som är associerad med ditt konto upphör att gälla om 7 dagar och är inte giltig för autentisering.

  • En SSH-nyckel som är associerad med ditt konto har upphört att gälla och är inte längre giltig för autentisering.

    Exempelmeddelande

    Skärmbild som visar e-postavisering för SSH-nyckel.

F: Vad gör jag om jag tror att någon annan än jag lägger till SSH-nycklar på mitt konto?

A: Om du får ett meddelande om SSH-nyckelregistrering som du inte initierade kan dina autentiseringsuppgifter komprometteras.

Nästa steg är att undersöka om lösenordet har komprometterats. Att ändra ditt lösenord är alltid ett bra första steg för att försvara dig mot den här attackvektorn. Om du är en Microsoft Entra användare kan du prata med administratören för att kontrollera om ditt konto har använts från en okänd källa eller plats.

F: Vad gör jag om jag fortfarande uppmanas att ange mitt lösenord och GIT_SSH_COMMAND="ssh -v" git fetch visar no mutual signature algorithm eller corresponding algo not in PubkeyAcceptedAlgorithms?

A: Vissa Linux-distributioner, till exempel Fedora Linux, tillämpar kryptoprinciper som kräver starkare SSH-signaturalgoritmer än vad din nuvarande Azure DevOps SSH-konfiguration tillåter.

Du kan undvika problemet genom att lägga till följande kod i SSH-konfigurationen (~/.ssh/config):

Host ssh.dev.azure.com vs-ssh.visualstudio.com
   PubkeyAcceptedAlgorithms +ssh-rsa

Om din OpenSSH-version endast stöder det äldre inställningsnamnet använder du PubkeyAcceptedKeyTypes i stället.

Använd den här koden som en tillfällig kompatibilitetslösning. Uppgradera om möjligt SSH-klienten eller serverkonfigurationen och ta bort den här åsidosättningen efter testningen.

Allmänna frågor

F: Kan jag använda SSH med Azure DevOps Server?

S: Ja. För lokalt installerade Azure DevOps Server-instanser använder du serverns värdnamn i SSH-konfiguration och fjärr-URL:er i stället för ssh.dev.azure.com. Om den här artikeln visar ssh.dev.azure.com eller vs-ssh.visualstudio.comersätter du värdnamnet för servern.

F: Varför slutade min SSH-nyckel för Azure DevOps Services att fungera?

A: SSH-nyckelautentisering kräver att du regelbundet loggar in på Azure DevOps Services med hjälp av det fullständiga autentiseringsflödet (webben). Det räcker att logga in en gång var 30:e dag för många användare, men du kan behöva logga in oftare beroende på din Microsoft Entra konfiguration. Om din SSH-nyckel slutar fungera kan du först försöka logga in i din organisation och slutföra den fullständiga autentiseringsprompten. Om SSH-nyckeln fortfarande inte fungerar kontrollerar du om den har upphört att gälla.

Tips

För lokala instanser av Azure DevOps Server använder du lämpligt värdnamn på raden i Host stället för ssh.dev.azure.com eller vs-ssh.visualstudio.com.