Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 -vin 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):
- Linux
- macOS
- Windows systemen met Git voor Windows
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.
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.
Selecteer + Nieuwe sleutel.
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.
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.
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.
Test de verbinding door de volgende opdracht uit te voeren:
ssh -T git@ssh.dev.azure.comAls 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.
Voer in
yesom 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 0Als 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?
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.
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 devisualstudio.comindeling wordt echter nog steeds ondersteund. Zie voor meer informatie Overstappen op Azure DevOps en bestaande organisaties omstellen om de nieuwe domeinnaam-URL te gebruiken.Uitvoeren
git clonevanaf de opdrachtprompt.git clone git@ssh.dev.azure.com:v3/fabrikam-fiber/FabrikamFiber/FabrikamFiberAls 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.
- Als uw sleutel is verlopen of ongeldig is, begint u met verlopen of ongeldige sleutels.
- Als SSH geen verbinding kan maken, begint u met veelvoorkomende verbindingsfouten.
- Als u herhaaldelijk om een wachtwoordzin wordt gevraagd, begint u met de SSH-agent en problemen met de wachtwoordzin.
- Als u meerdere sleutels of organisaties gebruikt, gaat u naar Meerdere sleutels en organisaties beheren.
- Als u meldingen of accountrichtlijnen nodig hebt, gaat u naar Meldingen en accountproblemen.
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
Vraag: Ik zie ssh-rsa gerelateerde waarschuwingen. Wat moet ik doen?
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-rsawaarschuwingen is beschreven: verwijder eventueleHostkeyAlgorithms +ssh-rsaoverschrijvingen en gebruikrsa-sha2-256en/ofrsa-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-rsaWijzig uw SSH-configuratie om uw beveiligingsinstellingen voor Azure DevOps te downgraden door het volgende toe te voegen aan het bestand
~/.ssh/config(%UserProfile%\.ssh\configop Windows):Host ssh.dev.azure.com vs-ssh.visualstudio.com HostkeyAlgorithms +ssh-rsaGebruik 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-rsaoverschrijvingen.Belangrijk
OpenSSH heeft het
ssh-rsaalgoritme 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-512Wijzig uw SSH-configuratie om uw beveiligingsinstellingen voor Azure DevOps te downgraden door het volgende toe te voegen aan het bestand
~/.ssh/config(%UserProfile%\.ssh\configop Windows):Host ssh.dev.azure.com vs-ssh.visualstudio.com MACs +hmac-sha2-512,+hmac-sha2-256Geen 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-sha256Wijzig uw SSH-configuratie om uw beveiligingsinstellingen voor Azure DevOps te downgraden door het volgende toe te voegen aan het bestand
~/.ssh/config(%UserProfile%\.ssh\configop Windows):Host ssh.dev.azure.com vs-ssh.visualstudio.com KexAlgorithms +diffie-hellman-group-exchange-sha256,+diffie-hellman-group14-sha1,+diffie-hellman-group1-sha1Belangrijk
Het algoritme
diffie-hellman-group1-sha1voor sleuteluitwisseling is standaard uitgeschakeld in versie 6.9 van OpenSSH endiffie-hellman-group14-sha1in 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:
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.
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
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