SSH-sleutelverificatie gebruiken

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

Gebruik SSH op macOS, Linux of Windows om veilig te verifiëren bij Azure-opslagplaatsen Git-opslagplaatsen in Azure DevOps.

In dit artikel wordt beschreven hoe u een RSA-sleutelpaar maakt, de openbare sleutel toevoegt aan uw profiel en opslagplaatsen kloont met behulp van SSH.

Belangrijk

SSH-URL's zijn gewijzigd, maar oude SSH-URL's blijven werken. Als u SSH al hebt ingesteld, werkt u uw externe URL's bij naar de nieuwe indeling:

Bijgewerkte SSH-URL's beginnen met ssh.dev.azure.com. De vorige URL's gebruiken vs-ssh.visualstudio.com.

  • Controleer welke externe apparaten SSH gebruiken. Voer git remote -v in uw shell uit of gebruik in plaats daarvan een GUI-client.
  • Ga naar de opslagplaats op het web en selecteer Clone.
  • Selecteer SSH en kopieer de nieuwe SSH-URL.
  • Voer in uw shell uit git remote set-url <remote name> <new SSH URL> voor elke externe opslagplaats die u wilt bijwerken. U kunt ook een GUI-client gebruiken om de externe URL's bij te werken.

Vereiste voorwaarden

Categorie Requirements
toestemmingen Toegang om de opslagplaats te klonen
beleidsregels SSH-verificatie ingeschakeld
Lokale hulpprogramma's Git en een OpenSSH-client die beschikbaar zijn via een terminal of shell
Windows omgeving Als u Windows gebruikt, gebruikt Git voor Windows of een andere omgeving waar git, sshen ssh-keygen beschikbaar zijn
Lokale toegang Toegang tot uw lokale .ssh map en machtiging voor het maken van sleutelbestanden

Hoe SSH-sleutelverificatie werkt

Verificatie van openbare SSH-sleutels werkt met een asymmetrisch paar gegenereerde versleutelingssleutels. U deelt de openbare sleutel met Azure DevOps om de eerste SSH-verbinding te verifiëren. Bewaar de privésleutel veilig op uw systeem.

SSH-sleutelverificatie instellen

Als u SSH wilt gebruiken met Azure-opslagplaatsen, genereert u een RSA-sleutelpaar, voegt u de openbare sleutel toe aan uw Azure DevOps-profiel, controleert u de vingerafdruk van de server en kloont of werkt u de opslagplaats vervolgens bij om de SSH-URL te gebruiken.

Als u alleen het snelste pad nodig hebt, voert u stap 1, stap 2 en stap 3 in de gewenste volgorde uit en gebruikt u problemen met SSH-verificatie oplossen alleen als een opdracht mislukt.

De volgende stappen hebben betrekking op de configuratie van SSH-sleutelverificatie op de volgende platforms met behulp van de opdrachtregel (ook wel genoemd shell):

Aanbeveling

Gebruik In Windows Git Credential Manager in plaats van SSH.

Stap 1: Uw SSH-sleutels maken

Notitie

Als u al RSA SSH-sleutels op uw systeem hebt gemaakt, slaat u deze stap over en gaat u naar stap 2. Om dit te controleren, gaat u naar uw basismap en kijkt u in de .ssh map (%UserProfile%\.ssh\op Windows of ~/.ssh/ in Linux, macOS en Windows met Git Bash). Als u twee bestanden ziet met de naam id_rsa en id_rsa.pubgaat u verder met stap 2.

Als u verificatie op basis van sleutels wilt gebruiken, moet u eerst een openbaar/persoonlijk sleutelpaar voor uw client genereren. OpenSSH kan verschillende sleuteltypen genereren, maar Azure DevOps ondersteunt RSA-sleutels voor SSH-verificatie.

Notitie

Azure DevOps ondersteunt RSA-sleutels en maakt gebruik van RSA-SHA2 handtekeningalgoritmen tijdens verificatie. Genereer een RSA-sleutel en laat uw SSH-client onderhandelen over de ondersteunde RSA-SHA2 handtekening wanneer deze verbinding maakt.

Als u een RSA-sleutelpaar voor Azure DevOps wilt genereren, voert u de volgende opdracht uit vanuit PowerShell of een andere shell, zoals bash op uw client:

ssh-keygen -t rsa -b 3072

In de uitvoer van de opdracht moet de volgende uitvoer worden weergegeven (waar username is uw gebruikersnaam):

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

Druk op Enter om de standaardwaarde te accepteren of geef een pad en/of bestandsnaam op waar u de sleutels wilt genereren. Op dit moment wordt u gevraagd om een wachtwoordzin te gebruiken om uw persoonlijke sleutelbestanden te versleutelen. De wachtwoordzin kan leeg zijn, maar wordt niet aanbevolen. Met de wachtwoordzin wordt nog een beveiligingslaag voor uw persoonlijke sleutel toegevoegd als het bestand wordt weergegeven.

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]-----+

U hebt nu een openbaar/persoonlijk RSA-sleutelpaar op de locatie die u hebt opgegeven. De .pub bestanden zijn openbare sleutels en bestanden zonder extensie zijn persoonlijke sleutels:

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

Belangrijk

Deel nooit de inhoud van uw persoonlijke sleutel. Als de persoonlijke sleutel is aangetast, kunnen aanvallers deze gebruiken om servers te misleiden om na te denken dat de verbinding van u afkomstig is. Persoonlijke-sleutelbestanden zijn het equivalent van een wachtwoord en moeten op dezelfde manier worden beveiligd.

Stap 2: De openbare sleutel toevoegen aan Azure DevOps

Koppel de openbare sleutel die in de vorige stap is gegenereerd aan uw gebruikers-id.

Notitie

De openbare SSH-sleutel is gekoppeld aan uw gebruikersprofiel. In de meeste gevallen kunt u één sleutel in organisaties gebruiken voor dezelfde identiteit. Voeg alleen een afzonderlijke sleutel toe wanneer u een andere identiteit of account gebruikt.

  1. Open uw beveiligingsinstellingen door naar de webportal te bladeren en het pictogram naast de avatar in de rechterbovenhoek van de gebruikersinterface te selecteren. Selecteer openbare SSH-sleutels in het menu dat wordt weergegeven.

    Schermopname met het menu-item openbare SSH-sleutels en de avatar van de gebruiker die is geselecteerd in Azure DevOps.

  2. Selecteer + Nieuwe sleutel.

    Schermafbeelding met toegang tot beveiligingsconfiguratie in Azure DevOps.

  3. Kopieer de inhoud van de openbare sleutel (bijvoorbeeld id_rsa.pub) die u hebt gegenereerd in het veld Openbare sleutelgegevens .

    Belangrijk

    Vermijd het toevoegen van extra spaties of regeleinden in het midden van de sleutelwaarde, omdat deze de sleutel ongeldig kunnen maken. Als er bij het plakken opmaakartefacten worden toegevoegd, verwijder deze voordat u opslaat.

    Schermopname met het configureren van een openbare sleutel in Azure DevOps.

  4. Geef de sleutel een nuttige beschrijving (deze beschrijving wordt weergegeven op de pagina openbare SSH-sleutels voor uw profiel), zodat u deze later kunt onthouden. Selecteer Opslaan om de openbare sleutel op te slaan. Nadat u de sleutel hebt opgeslagen, kunt u de sleutel niet meer wijzigen. U kunt de sleutel verwijderen of een nieuwe vermelding voor een andere sleutel maken. Er zijn geen beperkingen voor het aantal sleutels dat u aan uw gebruikersprofiel kunt toevoegen.

    Notitie

    Organisatiebeleid kan het verlopen van de SSH-sleutel afdwingen. Zie Verbindings- en beveiligingsbeleid voor toepassingen voor uw organisatie wijzigen voor meer informatie.

  5. Op de overzichtspagina met openbare SSH-sleutels worden de vingerafdrukken van de server weergegeven. Noteer de SHA256-vingerafdruk die moet worden gebruikt wanneer u voor het eerst verbinding maakt met Azure DevOps via SSH.

    Scherm van toegang tot de beveiligingsconfiguratie in Azure DevOps Services.

  6. Test de verbinding door de volgende opdracht uit te voeren:

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

    Als u voor het eerst verbinding maakt, ontvangt u de volgende uitvoer:

    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])?
    

    Vergelijk die vingerafdruk met de SHA256-vingerafdruk die wordt weergegeven op de pagina openbare SSH-sleutels . Ga alleen door als de waarden overeenkomen.

  7. Voer in yes om door te gaan. Als alles correct is geconfigureerd, ziet de uitvoer er als volgt uit:

     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
    

    Als dat niet het probleem is, raadpleegt u de sectie over vragen en probleemoplossing.

Stap 3: De Git-opslagplaats klonen met behulp van SSH

Notitie

Als u SSH wilt gebruiken met een opslagplaats die u eerder hebt gekloond met behulp van HTTPS, raadpleegt u Hoe kan ik SSH gaan gebruiken in een opslagplaats waar ik momenteel HTTPS gebruik?

  1. Kopieer de SSH-kloon-URL vanuit de webportal. In dit voorbeeld is de SSH-kloon-URL voor een opslagplaats in een organisatie met de naam fabrikam-fiber, zoals aangegeven door het eerste deel van de URL na dev.azure.com.

    Screenshot met de SSH-gekloneerde URL van Azure-opslagplaatsen.

    Notitie

    Met Azure DevOps Services is de indeling voor de project-URL dev.azure.com/{your organization}/{your project}. De vorige indeling die verwijst naar de visualstudio.com indeling wordt echter nog steeds ondersteund. Zie voor meer informatie Overstappen op Azure DevOps en bestaande organisaties omstellen om de nieuwe domeinnaam-URL te gebruiken.

  2. Uitvoeren git clone vanaf de opdrachtprompt.

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

    Als u geen SSH-agent gebruikt, wordt u gevraagd uw wachtwoordzin in te voeren:

    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.
    

    Als u in plaats daarvan wordt gevraagd om een vingerafdruk te verifiëren, leest u Step 2: voeg de openbare sleutel opnieuw toe aan Azure DevOps. Lees de sectie over vragen en probleemoplossing voor andere problemen.

Aanbeveling

Als u optimaal gebruik wilt maken van SSH, gebruikt u een SSH-agent om uw SSH-sleutels te beheren. Het instellen van een agent valt buiten het bereik van dit artikel.

AI gebruiken om te werken met door SSH geverifieerde opslagplaatsen

Als u Git-opslagplaatsen gebruikt met GitHub Copilot of de Azure DevOps MCP-server, kunt u vragen in natuurlijke taal gebruiken om uw SSH-installatie te valideren en verificatieproblemen vast te stellen.

Task Voorbeeldprompt
Controleer welke remote een repo gebruikt Check whether this repository uses SSH or HTTPS for origin, and show me how to switch it to SSH if needed.
SSH-installatie controleren Review my Git remote configuration and explain whether it matches the Azure Repos SSH format.
Een authenticatiefout diagnosticeren Help me troubleshoot this Azure Repos SSH error: remote: Public key authentication failed.
Controleren welke sleutel SSH gebruikt 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.

Aanbeveling

In Visual Studio Code is de agentmodus handig voor het controleren van externe apparaten, het controleren van de SSH-configuratie en het voorstellen van de volgende stappen voor probleemoplossing vanuit terminaluitvoer.

Problemen oplossen en veelgestelde vragen

Gebruik de volgende secties om het probleem te achterhalen dat overeenkomt met uw SSH-installatieprobleem.

Verlopen of ongeldige sleutels

V: Mijn SSH-sleutel is verlopen. Wat moet ik doen?

A: Volg de voorgaande stappen om een nieuwe SSH-sleutel te maken en te uploaden.

Als een alternatieve optie kan een Project Verzamelingsbeheerder het beleid uitschakelen waarmee de vervaldatum van de SSH-sleutel wordt gevalideerd. Standaard is het verloopbeleid voor SSH-sleutels valideren ingeschakeld. Zie SSH-sleutelbeleidsregels voor meer informatie.

U ontvangt automatisch een melding zeven dagen van tevoren en op het moment dat uw sleutel verloopt. Naast deze meldingen ziet u de volgende berichten:

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.

Veelvoorkomende verbindingsfouten

A: Mogelijk ziet u een van de volgende waarschuwingsberichten:

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.

Of

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.

Als u de SSH-configuratie hebt gewijzigd om uw beveiligingsinstellingen voor Azure DevOps te downgraden door het volgende toe te voegen aan uw bestand ~/.ssh/config (%UserProfile%\.ssh\config op Windows):

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

Verwijder deze regels nu en controleer of rsa-sha2-256 deze rsa-sha2-512 zijn toegestaan.

Lees de blogpost voor meer informatie.

Dit herstel is de canonieke oplossing voor afgeschafte ssh-rsa waarschuwingen en niet-ondersteunde ssh-rsa fouten. Gebruik deze als eerste stap voor deze scenario's.

V: SSH kan geen verbinding tot stand brengen. Wat moet ik doen?

A: Er kunnen verschillende problemen optreden:

  • Gebruik van niet-ondersteunde ssh-rsa

    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.
    

    Pas dezelfde herstelmaatregel toe die in de vorige vraag over ssh-rsa waarschuwingen is beschreven: verwijder eventuele HostkeyAlgorithms +ssh-rsa overschrijvingen en gebruik rsa-sha2-256 en/of rsa-sha2-512.

  • Geen overeenkomende hostsleutel

    Dit probleem mag niet optreden in Azure DevOps Service of in recentere Azure DevOps Server versies zoals vermeld in de blogpost.

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

    Wijzig uw SSH-configuratie om uw beveiligingsinstellingen voor Azure DevOps te downgraden door het volgende toe te voegen aan het bestand ~/.ssh/config (%UserProfile%\.ssh\config op Windows):

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

    Gebruik deze tijdelijke oplossing alleen voor verouderde compatibiliteitsscenario's, meestal voor oudere zelf-hostende Azure DevOps Server configuraties. Voor Azure DevOps Services: behoud veilige standaardinstellingen en vermijd permanente ssh-rsa overschrijvingen.

    Belangrijk

    OpenSSH heeft het ssh-rsa algoritme voor openbare sleutelhandtekening afgeschaft in versie 8.2 en standaard uitgeschakeld in versie 8.8.

  • Geen overeenkomende MAC

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

    Wijzig uw SSH-configuratie om uw beveiligingsinstellingen voor Azure DevOps te downgraden door het volgende toe te voegen aan het bestand ~/.ssh/config (%UserProfile%\.ssh\config op Windows):

    Host ssh.dev.azure.com vs-ssh.visualstudio.com
       MACs +hmac-sha2-512,+hmac-sha2-256
    
  • Geen overeenkomende methode voor het uitwisselen van sleutels

    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
    

    Wijzig uw SSH-configuratie om uw beveiligingsinstellingen voor Azure DevOps te downgraden door het volgende toe te voegen aan het bestand ~/.ssh/config (%UserProfile%\.ssh\config op Windows):

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

    Belangrijk

    Het algoritme diffie-hellman-group1-sha1 voor sleuteluitwisseling is standaard uitgeschakeld in versie 6.9 van OpenSSH en diffie-hellman-group14-sha1 in versie 8.2.

Aanbeveling

Gebruik voor zelf-hostende exemplaren van Azure DevOps Server de juiste hostnaam in de Host regel in plaats van ssh.dev.azure.com .vs-ssh.visualstudio.com

Problemen met SSH-agent en wachtwoordzin

Q: De SSH-agent is niet actief, of mijn sleutel is niet geladen. Wat moet ik doen?

A: Als uw sleutel bestaat, maar SSH nog steeds elke keer om een wachtwoordzin vraagt, of als het klonen mislukt nadat de sleutel is gemaakt, controleert u of de SSH-agent wordt uitgevoerd en of uw sleutel is geladen.

Gebruik de volgende opdracht om te zien welke identiteiten de agent momenteel heeft geladen:

ssh-add -l

Als in de uitvoer wordt aangegeven dat de agent geen identiteiten heeft, voegt u uw persoonlijke sleutel toe aan de agent:

ssh-add ~/.ssh/id_rsa

Als u PowerShell in Windows gebruikt met de ingebouwde OpenSSH-agent, controleert u of de ssh-agent service wordt uitgevoerd voordat u de sleutel toevoegt. Als u Git Bash of een andere SSH-client gebruikt, raadpleegt u de documentatie van die client voor het starten van de agent en het laden van sleutels.

Als u liever geen agent gebruikt, kan SSH nog steeds werken, maar wordt u vaker gevraagd om de wachtwoordzin voor de sleutel.

V: Hoe kan ik git de wachtwoordzin voor mijn sleutel onthouden?

A: Gebruik een SSH-agent. Linux, macOS en Windows (beginnend met Windows 10 (build 1809) of door Git te gebruiken voor Windows met Git Bash), worden allemaal geleverd met een SSH-agent. De SSH-agent kan uw SSH-sleutels opslaan voor herhaald gebruik. Raadpleeg de handleiding van uw SSH-leverancier voor meer informatie over het gebruik ervan.

V: Ik gebruik PuTTY als mijn SSH-client en heb mijn sleutels gegenereerd met PuTTYgen. Kan ik deze sleutels gebruiken met Azure DevOps Services?

A: Ja. Laad de persoonlijke sleutel met PuTTYgen, ga naar het menu Conversies en selecteer OpenSSH-sleutel exporteren. Sla het bestand met de persoonlijke sleutel op en volg de latere vraag in dit artikel over het gebruik van een niet-standaardsleutellocatie. Kopieer uw openbare sleutel rechtstreeks vanuit het puTTYgen-venster en plak deze in het veld Sleutelgegevens in uw beveiligingsinstellingen.

V: Hoe kan ik controleren of de openbare sleutel die ik heb geüpload dezelfde sleutel is als mijn lokale sleutel?

A: Controleer de vingerafdruk van de openbare sleutel die u hebt geüpload door deze te vergelijken met de vingerafdruk die in uw profiel wordt weergegeven. Voer de volgende ssh-keygen opdracht uit op uw openbare sleutel met behulp van de opdrachtregel. U moet het pad en de bestandsnaam van de openbare sleutel wijzigen als u de standaardinstellingen niet gebruikt.

Notitie

Geef de voorkeur aan SHA-256-vingerafdrukken. Gebruik MD5 alleen als u wilt vergelijken met een verouderde vingerafdrukindeling.

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

Vergelijk vervolgens de handtekening met de handtekening in uw profiel. Deze controle is handig als u verbindingsproblemen ondervindt of zorgen hebt over het onjuist plakken van de openbare sleutel in het veld Sleutelgegevens bij het toevoegen van de sleutel aan Azure DevOps.

V: Hoe kan ik SSH gaan gebruiken in een opslagplaats waar ik momenteel HTTPS gebruik?

A: Werk de origin remote in Git bij zodat deze van een HTTPS-URL naar een SSH-URL verandert. Nadat u de SSH-kloon-URL hebt ontvangen, voert u de volgende opdracht uit:

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

Git-opdrachten die toegang hebben tot de remote met de naam origin gebruiken SSH.

Meerdere sleutels en organisaties beheren

V: Ik gebruik Git LFS met Azure DevOps Services en ik krijg fouten bij het ophalen van bestanden die worden bijgehouden door Git LFS.

A: Azure DevOps Services biedt momenteel geen ondersteuning voor LFS via SSH. Gebruik HTTPS om verbinding te maken met opslagplaatsen met door Git LFS bijgehouden bestanden.

V: Hoe kan ik een niet-standaardsleutellocatie gebruiken, dat wil zeggen, niet ~/.ssh/id_rsa en ~/.ssh/id_rsa.pub?

A: Als u een sleutel wilt gebruiken die op een andere locatie is opgeslagen dan de standaardinstelling, voert u de volgende twee taken uit:

  1. De sleutels moeten zich in een map bevinden die alleen u kunt lezen of bewerken. Als de map bredere machtigingen heeft, gebruikt SSH de sleutels niet.

  2. U moet SSH bijvoorbeeld de locatie van de sleutel laten weten door deze op te geven als een 'Identiteit' in de SSH-configuratie:

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

De IdentitiesOnly yes instelling zorgt ervoor dat SSH geen andere beschikbare identiteit gebruikt om te verifiëren. Deze instelling is met name belangrijk als er meer dan één identiteit beschikbaar is.

V: Ik heb meerdere SSH-sleutels. Hoe gebruik ik de juiste SSH-sleutel voor Azure DevOps?

A: Wanneer u meerdere sleutels voor een SSH-client configureert, probeert de client zich met elke sleutel opeenvolgend te verifiëren totdat de SSH-server er een accepteert.

Deze benadering werkt echter niet met Azure DevOps vanwege technische beperkingen met betrekking tot het SSH-protocol en de structuur van onze Git SSH-URL's. Azure DevOps accepteert de eerste sleutel van de client tijdens de verificatie. Als deze sleutel ongeldig is voor de aangevraagde opslagplaats, mislukt de aanvraag zonder andere beschikbare sleutels uit te voeren, wat resulteert in de volgende fout:

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

Voor Azure DevOps moet u SSH configureren om expliciet een specifiek sleutelbestand te gebruiken. De procedure is hetzelfde als wanneer u een sleutel gebruikt die is opgeslagen op een niet-standaardlocatie. Vertel SSH de juiste SSH-sleutel te gebruiken voor de Azure DevOps host.

V: Hoe gebruik ik verschillende SSH-sleutels voor verschillende organisaties op Azure DevOps?

A: Azure DevOps accepteert de eerste sleutel die de client tijdens de verificatie verstrekt. Als deze sleutel ongeldig is voor de aangevraagde opslagplaats, mislukt de aanvraag met de volgende fout:

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

Deze fout treedt op omdat alle Azure DevOps URL's dezelfde hostnaam (ssh.dev.azure.com) delen, waardoor SSH standaard geen onderscheid kan maken tussen deze url's. U kunt uw SSH-configuratie echter wijzigen om onderscheid te maken tussen verschillende organisaties door afzonderlijke sleutels voor elk van beide te bieden. Gebruik hostaliassen om afzonderlijke Host secties te maken in uw SSH-configuratiebestand.

# 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

Nadat u dit heeft gedaan, in plaats van de echte URL's te gebruiken, geeft u Git aan dat u deze URL's voor elke opslagplaats voor externe instellingen wilt gebruiken door de hostnaam in de bestaande remotes te vervangen door respectievelijk devops_fabrikam en devops_contoso. Bijvoorbeeld, git@ssh.dev.azure.com:v3/Fabrikam/Project1/fab_repo wordt git@devops_fabrikam:v3/Fabrikam/Project1/fab_repo.

Meldingen en problemen met je account

V: Welke meldingen kan ik ontvangen over mijn SSH-sleutels?

A: Mogelijk ontvangt u enkele meldingen met betrekking tot uw SSH-sleutels.

  • Er is een nieuwe SSH-sleutel toegevoegd aan uw organisatie.

  • Een SSH-sleutel die is gekoppeld aan uw account verloopt over zeven dagen en is niet geldig voor verificatie.

  • Een SSH-sleutel die is gekoppeld aan uw account is verlopen en is niet meer geldig voor verificatie.

    Voorbeeldmelding

    Schermopname van de e-mailmelding van de SSH-sleutel.

V: Wat moet ik doen als ik geloof dat iemand anders dan ik SSH-sleutels toevoegt aan mijn account?

A: Als u een SSH-sleutelregistratiemelding ontvangt die u niet hebt gestart, zijn uw referenties mogelijk aangetast.

De volgende stap is om te onderzoeken of uw wachtwoord is aangetast. Het wijzigen van uw wachtwoord is altijd een goede eerste stap om u te beschermen tegen deze aanvalsvector. Als u een Microsoft Entra gebruiker bent, neem dan contact op met de beheerder om te controleren of uw account is gebruikt vanuit een onbekende bron of locatie.

V: Wat moet ik doen als ik nog steeds om mijn wachtwoord wordt gevraagd en GIT_SSH_COMMAND="ssh -v" git fetch deze weergeeft no mutual signature algorithm of corresponding algo not in PubkeyAcceptedAlgorithms?

A: Sommige Linux-distributies, zoals Fedora Linux, dwingen cryptobeleid af waarvoor sterkere SSH-handtekeningalgoritmen zijn vereist dan uw huidige Azure DevOps SSH-configuratie is toegestaan.

Als u het probleem wilt omzeilen, voegt u de volgende code toe aan uw SSH-configuratie (~/.ssh/config):

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

Als uw OpenSSH-versie alleen de oudere naam van de instelling ondersteunt, gebruikt u in plaats daarvan PubkeyAcceptedKeyTypes.

Gebruik deze code als tijdelijke tijdelijke compatibiliteitsoplossing. Werk indien mogelijk uw SSH-client of serverconfiguratie bij en verwijder deze overschrijving nadat u hebt getest.

Algemene vragen

V: Kan ik SSH gebruiken met Azure DevOps Server?

A: Ja. Voor zelf-hostende Azure DevOps Server exemplaren gebruikt u de hostnaam van de server in de SSH-configuratie en externe URL's in plaats van ssh.dev.azure.com. Waar in dit artikel ssh.dev.azure.com of vs-ssh.visualstudio.com staat, vervangt u dit door de hostnaam van uw server.

V: Waarom werkt mijn Azure DevOps Services SSH-sleutel niet meer?

A: Voor SSH-sleutelverificatie moet u zich regelmatig aanmelden bij Azure DevOps Services met behulp van de volledige verificatiestroom (web). Om de 30 dagen aanmelden is voldoende voor veel gebruikers, maar mogelijk moet u zich vaker aanmelden, afhankelijk van de configuratie van uw Microsoft Entra. Als uw SSH-sleutel niet meer werkt, meldt u zich eerst aan bij uw organisatie en voltooit u de volledige verificatieprompt. Als uw SSH-sleutel nog steeds niet werkt, controleert u of deze is verlopen.

Aanbeveling

Gebruik voor zelf-hostende exemplaren van Azure DevOps Server de juiste hostnaam in de Host regel in plaats van ssh.dev.azure.com .vs-ssh.visualstudio.com