Usare l'autenticazione con chiave SSH

servizi Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

Usare SSH in macOS, Linux o Windows per eseguire l'autenticazione sicura in Azure Repos repository Git in Azure DevOps.

Questo articolo illustra come creare una coppia di chiavi RSA, aggiungere la chiave pubblica al profilo e clonare i repository usando SSH.

Importante

Gli URL SSH sono stati modificati, ma gli URL SSH precedenti continuano a funzionare. Se si è già configurato SSH, aggiornare gli URL remoti al nuovo formato:

Gli URL SSH aggiornati iniziano con ssh.dev.azure.com. Gli URL precedenti usano vs-ssh.visualstudio.com.

  • Verificare quali remote usano SSH. Eseguire git remote -v nella shell o usare invece un client GUI.
  • Visita il tuo repository sul web e seleziona Clona.
  • Selezionare SSH e copiare il nuovo URL SSH.
  • Nella shell eseguire git remote set-url <remote name> <new SSH URL> per ogni repository remoto da aggiornare. In alternativa, usare un client GUI per aggiornare gli URL remoti.

Prerequisiti

Categoria Requisiti
Autorizzazioni Accesso per clonare il repository
Politiche Autenticazione SSH abilitata
Strumenti locali Git e un client OpenSSH disponibili nel terminale o nella shell
ambiente Windows Se usi Windows, Git for Windows o un altro ambiente in cui git, ssh e ssh-keygen sono disponibili
Accesso locale Accesso alla cartella locale .ssh e all'autorizzazione per creare file di chiave

Funzionamento dell'autenticazione della chiave SSH

L'autenticazione con chiave pubblica SSH funziona con una coppia asimmetrica di chiavi di crittografia generate. La chiave pubblica viene condivisa con Azure DevOps per verificare la connessione SSH iniziale. Conserva la chiave privata al sicuro e protetta sul tuo sistema.

Configurare l'autenticazione della chiave SSH

Per usare SSH con Azure Repos, generare una coppia di chiavi RSA, aggiungere la chiave pubblica al profilo Azure DevOps, verificare l'impronta digitale del server e quindi clonare o aggiornare il repository per usare l'URL SSH.

Se è necessario solo il percorso più veloce, completare il passaggio 1, il passaggio 2 e il passaggio 3 nell'ordine e quindi usare Risolvere i problemi di autenticazione SSH solo se un comando non riesce.

I passaggi seguenti illustrano la configurazione dell'autenticazione della chiave SSH nelle piattaforme seguenti usando la riga di comando (chiamata shellanche ):

Suggerimento

In Windows usare Git Credential Manager anziché SSH.

Passaggio 1: Creare le chiavi SSH

Nota

Se nel sistema sono già state create chiavi SSH RSA, ignorare questo passaggio e andare al passaggio 2. Per verificarlo, passare alla home directory e cercare nella .ssh cartella (%UserProfile%\.ssh\ in Windows o ~/.ssh/ in Linux, macOS e Windows con Git Bash). Se vengono visualizzati due file denominati id_rsa e id_rsa.pub, continuare con il passaggio 2.

Per usare l'autenticazione basata su chiave, è prima necessario generare una coppia di chiavi pubblica/privata per il client. OpenSSH può generare diversi tipi di chiavi, ma Azure DevOps supporta le chiavi RSA per l'autenticazione SSH.

Nota

Azure DevOps supporta le chiavi RSA e usa algoritmi di firma RSA-SHA2 durante l'autenticazione. Generare una chiave RSA e consentire al client SSH di negoziare la firma di RSA-SHA2 supportata quando si connette.

Per generare una coppia di chiavi RSA per Azure DevOps, eseguire il comando seguente da PowerShell o da un'altra shell, bash ad esempio nel client:

ssh-keygen -t rsa -b 3072

L'output del comando dovrebbe mostrare i risultati seguenti (dove username è il nome utente):

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

Premere INVIO per accettare l'impostazione predefinita oppure specificare un percorso e/o un nome file in cui si desidera generare i tasti. A questo punto, viene richiesto di usare una passphrase per crittografare i file di chiave privata. La passphrase può essere vuota ma non è consigliata. La passphrase aggiunge un altro livello di protezione per la chiave privata se il file viene esposto.

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

Ora hai una coppia di chiavi RSA pubblica/privata nella posizione specificata. I .pub file sono chiavi pubbliche e i file senza estensione sono chiavi private:

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

Importante

Non condividere mai il contenuto della chiave privata. Se la chiave privata è compromessa, gli utenti malintenzionati possono usarla per ingannare i server a pensare che la connessione proviene dall'utente. I file di chiave privata sono equivalenti a una password e devono essere protetti allo stesso modo.

Passaggio 2: Aggiungere la chiave pubblica a Azure DevOps

Associare la chiave pubblica generata nel passaggio precedente all'ID utente.

Nota

La chiave pubblica SSH è associata al profilo utente. Nella maggior parte dei casi, è possibile usare una chiave in tutte le organizzazioni per la stessa identità. Aggiungere una chiave separata solo quando si usa un'identità o un account diverso.

  1. Aprire le impostazioni di sicurezza passando al portale Web e selezionando l'icona accanto all'avatar in alto a destra dell'interfaccia utente. Selezionare Chiavi pubbliche SSH nel menu visualizzato.

    Screenshot che mostra la voce di menu Chiavi pubbliche SSH e l'avatar utente selezionato in Azure DevOps.

  2. Selezionare + Nuova chiave.

    Screenshot che mostra l'accesso a Configurazione di sicurezza in Azure DevOps.

  3. Copia il contenuto della chiave pubblica (ad esempio, id_rsa.pub) che hai generato nel campo Dati della chiave pubblica.

    Importante

    Evitare di aggiungere spazi aggiuntivi o interruzioni di riga al centro del valore della chiave, perché possono rendere la chiave non valida. Se l'operazione Incolla aggiunge artefatti di formattazione, rimuovili prima di salvare.

    Screenshot che mostra la configurazione di una chiave pubblica in Azure DevOps.

  4. Assegnare alla chiave una descrizione utile (questa descrizione viene visualizzata nella pagina delle chiavi pubbliche SSH per il profilo) in modo da poterla ricordare in un secondo momento. Selezionare Salva per archiviare la chiave pubblica. Dopo il salvataggio, non è possibile modificare la chiave. È possibile eliminare la chiave o creare un nuovo elemento per un'altra chiave. Non esistono restrizioni sul numero di chiavi che è possibile aggiungere al profilo utente.

    Nota

    I criteri dell'organizzazione possono imporre la scadenza della chiave SSH. Per altre informazioni, vedere Modificare la connessione dell'applicazione e i criteri di sicurezza per l'organizzazione.

  5. Nella pagina di panoramica delle chiavi pubbliche SSH vengono visualizzate le impronte digitali del server. Prendere nota dell'impronta digitale SHA256 da usare quando ci si connette per la prima volta a Azure DevOps tramite SSH.

    Screenshot per accedere alla configurazione di sicurezza in Azure DevOps Services.

  6. Testare la connessione eseguendo il comando seguente:

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

    Se ci si connette per la prima volta, si dovrebbe ricevere l'output seguente:

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

    Confrontare l'impronta digitale con l'impronta digitale SHA256 visualizzata nella pagina chiavi pubbliche SSH . Continuare solo se i valori corrispondono.

  7. Immettere yes per continuare. Se tutto è configurato correttamente, l'output sarà simile al seguente:

     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
    

    In caso contrario, vedere la sezione Domande e risoluzione dei problemi.

Passaggio 3: Clonare il repository Git usando SSH

Nota

Per usare SSH con un repository clonato in precedenza tramite HTTPS, vedere Come iniziare a usare SSH in un repository in cui si usa attualmente HTTPS?

  1. Copiare l'URL clone SSH dal portale Web. In questo esempio, l'URL clone SSH è per un repository in un'organizzazione denominata fabrikam-fiber, come indicato dalla prima parte dell'URL dopo dev.azure.com.

    Screenshot che mostra l'URL SSH clonato di Azure Repos.

    Nota

    Con Azure DevOps Services, il formato per l'URL del progetto è dev.azure.com/{your organization}/{your project}. Tuttavia, il formato precedente che fa riferimento al visualstudio.com formato è ancora supportato. Per ulteriori informazioni, vedere Introduzione ad Azure DevOps, Passare le organizzazioni esistenti per utilizzare il nuovo nome di dominio URL.

  2. Esegui git clone dal prompt dei comandi.

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

    Se non si usa un agente SSH, viene richiesto di immettere la passphrase:

    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.
    

    Se viene invece richiesto di verificare un'impronta digitale, leggere di nuovo Step 2: Aggiungere la chiave pubblica a Azure DevOps di nuovo. Per altri problemi, leggere la sezione Domande e risoluzione dei problemi.

Suggerimento

Per sfruttare al meglio SSH, usare un agente SSH per gestire le chiavi SSH. La configurazione di un agente non rientra nell'ambito di questo articolo.

Usare l'intelligenza artificiale per usare i repository autenticati tramite SSH

Se si usano repository Git con GitHub Copilot o il server MCP Azure DevOps, è possibile usare i prompt del linguaggio naturale per convalidare la configurazione SSH e diagnosticare i problemi di autenticazione.

Task Richiesta di esempio
Controlla quale remote usa il repository Check whether this repository uses SSH or HTTPS for origin, and show me how to switch it to SSH if needed.
Verificare l'installazione di SSH Review my Git remote configuration and explain whether it matches the Azure Repos SSH format.
Diagnosticare un errore di autenticazione Help me troubleshoot this Azure Repos SSH error: remote: Public key authentication failed.
Verificare quale chiave usa SSH 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.

Suggerimento

In Visual Studio Code la modalità agente è utile per controllare i dati remoti, esaminare la configurazione SSH e suggerire i passaggi successivi per la risoluzione dei problemi dall'output del terminale.

Risoluzione dei problemi e domande comuni

Usare le sezioni seguenti per trovare il problema che corrisponde al problema di configurazione SSH.

Chiavi scadute o non valide

D: La chiave SSH è scaduta. Cosa devo fare?

A: Segui i passaggi precedenti per creare e caricare una nuova chiave SSH.

Come opzione alternativa, un amministratore della raccolta di progetti può disabilitare il criterio che convalida la data di scadenza della chiave SSH. Per impostazione predefinita, il criterio di convalida della scadenza della chiave SSH è abilitato. Per altre informazioni, vedere Criteri di chiave SSH.

Si riceve automaticamente una notifica sette giorni prima e alla scadenza della chiave. Insieme a queste notifiche, viene visualizzata la messaggistica seguente:

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.

Errori di connessione comuni

R: Potrebbe essere visualizzato uno dei messaggi di avviso seguenti:

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.

O

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.

Se la configurazione SSH è stata modificata per effettuare il downgrade delle impostazioni di sicurezza per Azure DevOps aggiungendo quanto segue al file ~/.ssh/config (%UserProfile%\.ssh\config in Windows):

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

Rimuovete subito queste righe e assicuratevi che rsa-sha2-256 e rsa-sha2-512 siano consentiti.

Per altre informazioni, vedere il post di blog.

Questa correzione è la correzione canonica per gli avvisi deprecati ssh-rsa e gli errori non supportati ssh-rsa . Usarlo come primo passaggio per questi scenari.

D: SSH non è in grado di stabilire una connessione. Cosa devo fare?

A: Potresti riscontrare diversi problemi:

  • Uso di ssh-rsa non supportato

    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.
    

    Applica lo stesso intervento correttivo descritto nella domanda precedente relativa agli avvisi ssh-rsa: rimuovi qualsiasi override HostkeyAlgorithms +ssh-rsa e usa rsa-sha2-256 e/o rsa-sha2-512.

  • Nessuna chiave host corrispondente

    Questo problema non dovrebbe verificarsi nel servizio Azure DevOps o nelle versioni Azure DevOps Server più recenti, come indicato nel post blog.

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

    Modificare la configurazione SSH per effettuare il downgrade delle impostazioni di sicurezza per Azure DevOps aggiungendo quanto segue al file ~/.ssh/config (%UserProfile%\.ssh\config in Windows):

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

    Usare questa soluzione alternativa solo per gli scenari di compatibilità legacy, in genere per le configurazioni di Azure DevOps Server self-hosted meno recenti. Per Azure DevOps Services, mantieni le impostazioni predefinite protette ed evita sovrascritture persistenti ssh-rsa.

    Importante

    OpenSSH ha deprecato l'algoritmo ssh-rsa di firma della chiave pubblica nella versione 8.2 e lo ha disabilitato per impostazione predefinita nella versione 8.8.

  • Nessun MAC corrispondente

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

    Modificare la configurazione SSH per effettuare il downgrade delle impostazioni di sicurezza per Azure DevOps aggiungendo quanto segue al file ~/.ssh/config (%UserProfile%\.ssh\config in Windows):

    Host ssh.dev.azure.com vs-ssh.visualstudio.com
       MACs +hmac-sha2-512,+hmac-sha2-256
    
  • Nessun metodo di scambio di chiavi corrispondente

    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
    

    Modificare la configurazione SSH per effettuare il downgrade delle impostazioni di sicurezza per Azure DevOps aggiungendo quanto segue al file ~/.ssh/config (%UserProfile%\.ssh\config in Windows):

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

    Importante

    L'algoritmo diffie-hellman-group1-sha1 di scambio delle chiavi è disabilitato per impostazione predefinita nella versione 6.9 di OpenSSH e diffie-hellman-group14-sha1 nella versione 8.2.

Suggerimento

Per le istanze self-hosted di Azure DevOps Server, usare il nome host appropriato nella Host riga anziché ssh.dev.azure.com o vs-ssh.visualstudio.com.

Problemi relativi all'agente SSH e alla passphrase

Q: L'agente SSH non è in esecuzione, o la mia chiave non è caricata. Cosa devo fare?

R: Se la chiave esiste ma SSH richiede comunque una passphrase ogni volta o se la clonazione non riesce dopo la creazione della chiave, verificare se l'agente SSH è in esecuzione e se la chiave viene caricata.

Usare il comando seguente per visualizzare le identità attualmente caricate dall'agente:

ssh-add -l

Se l'output indica che l'agente non ha alcuna identità, aggiungi la tua chiave privata all'agente:

ssh-add ~/.ssh/id_rsa

In Windows, se si usa PowerShell con l'agente OpenSSH predefinito, assicurarsi che il ssh-agent servizio sia in esecuzione prima di aggiungere la chiave. Se si usa Git Bash o un altro client SSH, consultare la documentazione del client per avviare l'agente e caricare le chiavi.

Se si preferisce non usare un agente, SSH può comunque funzionare, ma viene richiesta più spesso la passphrase della chiave.

D: Come posso fare in modo che Git memorizzi la passphrase per la mia chiave?

R: Usare un agente SSH. Linux, macOS e Windows (a partire da Windows 10 (build 1809) o usando Git per Windows con Git Bash, tutti forniti con un agente SSH. L'agente SSH può memorizzare nella cache le chiavi SSH per un uso ripetuto. Per informazioni dettagliate su come usarlo, consultare il manuale del fornitore SSH.

Uso PuTTY come client SSH e ho generato le mie chiavi con PuTTYgen. È possibile usare queste chiavi con i servizi di Azure DevOps?

R: Sì. Caricare la chiave privata con PuTTYgen, passare al menu Conversioni e selezionare Esporta chiave OpenSSH. Salvare il file di chiave privata e quindi seguire la domanda successiva in questo articolo sull'uso di un percorso di chiave non predefinito. Copiare la chiave pubblica direttamente dalla finestra PuTTYgen e incollarla nel campo Dati chiave nelle impostazioni di sicurezza.

D: Come è possibile verificare che la chiave pubblica caricata sia la stessa chiave della chiave locale?

R: Verificare l'impronta digitale della chiave pubblica caricata confrontandola con quella visualizzata nel profilo. Eseguire il comando seguente ssh-keygen sulla chiave pubblica usando la riga di comando. Se non si usano le impostazioni predefinite, è necessario modificare il percorso e il nome file della chiave pubblica.

Nota

Preferisci le impronte SHA-256. Usare MD5 solo quando è necessario confrontare con un formato di impronta digitale legacy.

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

Confrontare quindi la firma con quella nel profilo. Questo controllo è utile se si verificano problemi di connessione o si verificano problemi di inserimento non corretto della chiave pubblica nel campo Dati chiave quando si aggiunge la chiave a Azure DevOps.

D: Come è possibile iniziare a usare SSH in un repository in cui si usa attualmente HTTPS?

A: Aggiorna il origin remote in Git per passare da un URL HTTPS a un URL SSH. Dopo aver visualizzato l'URL clone SSH, eseguire il comando seguente:

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

Comandi Git che accedono al remoto chiamato origin usano SSH.

Gestione di più chiavi e organizzazioni

D: Si usa Git LFS con Azure DevOps Services e si verificano errori durante il pull dei file rilevati da Git LFS.

A: Azure DevOps Services attualmente non supporta LFS tramite SSH. Usare HTTPS per connettersi ai repository con i file rilevati da Git LFS.

D: Come posso usare una posizione della chiave diversa da quella predefinita, ovvero diversa da ~/.ssh/id_rsa e ~/.ssh/id_rsa.pub?

R: Per usare una chiave archiviata in una posizione diversa da quella predefinita, eseguire queste due attività:

  1. Le chiavi devono trovarsi in una cartella che solo è possibile leggere o modificare. Se la cartella dispone di autorizzazioni più ampie, SSH non usa le chiavi.

  2. È necessario informare SSH del percorso della chiave, ad esempio specificandolo come "Identità" nella configurazione SSH:

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

L'impostazione IdentitiesOnly yes garantisce che SSH non usi altre identità disponibili per l'autenticazione. Questa impostazione è particolarmente importante se sono disponibili più identità.

D: Ho più chiavi SSH. Come si usa la chiave SSH corretta per Azure DevOps?

R: In genere, quando si configurano più chiavi per un client SSH, il client tenta di eseguire l'autenticazione con ogni chiave in sequenza fino a quando il server SSH non ne accetta uno.

Tuttavia, questo approccio non funziona con Azure DevOps a causa di vincoli tecnici correlati al protocollo SSH e alla struttura degli URL SSH Git. Azure DevOps accetta la prima chiave fornita dal client durante l'autenticazione. Se questa chiave non è valida per il repository richiesto, la richiesta non riesce senza tentare altre chiavi disponibili, generando l'errore seguente:

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

Per Azure DevOps, è necessario configurare SSH per usare in modo esplicito un file di chiave specifico. La procedura equivale a quando si usa una chiave archiviata in una posizione non predefinita. Indicare a SSH di usare la chiave SSH corretta per l'host Azure DevOps.

D: Come si usano chiavi SSH diverse per organizzazioni diverse in Azure DevOps?

R: Azure DevOps accetta la prima chiave fornita dal client durante l'autenticazione. Se la chiave non è valida per il repository richiesto, la richiesta ha esito negativo con l'errore seguente:

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

Questo errore si verifica perché tutti gli URL Azure DevOps condividono lo stesso nome host (ssh.dev.azure.com), rendendo impossibile per SSH distinguerli per impostazione predefinita. Tuttavia, è possibile modificare la configurazione SSH per distinguere tra organizzazioni diverse fornendo chiavi distinte per ognuna. Usare gli alias host per creare sezioni separate Host nel file di configurazione SSH.

# 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

In seguito, invece di usare gli URL reali, indicare a Git di voler usare questi URL per ogni repository come remoto sostituendo rispettivamente il nome host nei remote esistenti con devops_fabrikam e devops_contoso . Ad esempio, git@ssh.dev.azure.com:v3/Fabrikam/Project1/fab_repo diventa git@devops_fabrikam:v3/Fabrikam/Project1/fab_repo.

Notifiche e problemi relativi all'account

D: Quali notifiche è possibile ricevere sulle chiavi SSH?

Un: È possibile ricevere alcune notifiche relative alle chiavi SSH.

  • All'organizzazione è stata aggiunta una nuova chiave SSH.

  • Una chiave SSH associata all'account scade in 7 giorni e non è valida per l'autenticazione.

  • Una chiave SSH associata all'account è scaduta e non è più valida per l'autenticazione.

    Notifica di esempio

    Screenshot che mostra la notifica tramite posta elettronica della chiave SSH.

D: Cosa faccio se credo che qualcuno diverso da me stia aggiungendo chiavi SSH nel mio account?

A: Se ricevi una notifica di registrazione di una chiave SSH che non hai avviato, le tue credenziali potrebbero essere state compromesse.

Il passaggio successivo consiste nell'esaminare se la password è compromessa. La modifica della password è sempre un buon primo passo per difendersi da questo vettore di attacco. Se si è un utente Microsoft Entra, rivolgersi all'amministratore per verificare se l'account è stato usato da un'origine o da una posizione sconosciuta.

D: Cosa fare se viene ancora richiesta la password e GIT_SSH_COMMAND="ssh -v" git fetch viene visualizzata no mutual signature algorithm o corresponding algo not in PubkeyAcceptedAlgorithms?

A: Alcune distribuzioni Linux, come Fedora Linux, impongono criteri di crittografia che richiedono algoritmi di firma SSH più robusti di quelli consentiti dall'attuale configurazione SSH di Azure DevOps.

Per risolvere il problema, aggiungere il codice seguente alla configurazione SSH (~/.ssh/config):

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

Se la versione di OpenSSH supporta solo il nome dell'impostazione precedente, usare PubkeyAcceptedKeyTypes invece .

Usare questo codice come soluzione alternativa temporanea per la compatibilità. Se possibile, aggiornare la configurazione del client o del server SSH e rimuovere l'override dopo il test.

Domande generali

D: È possibile usare SSH con Azure DevOps Server?

R: Sì. Per le istanze di Azure DevOps Server self-hosted, usare il nome host del server nella configurazione SSH e negli URL remoti anziché ssh.dev.azure.com. Dove questo articolo mostra ssh.dev.azure.com o vs-ssh.visualstudio.com, sostituire il nome host per il server.

D: Perché la chiave SSH di Azure DevOps Services smette di funzionare?

Un: L'autenticazione con chiave SSH richiede di accedere regolarmente a Azure DevOps Services usando il flusso di autenticazione completo (Web). L'accesso una volta ogni 30 giorni è sufficiente per molti utenti, ma potrebbe essere necessario accedere più frequentemente a seconda della configurazione di Microsoft Entra. Se la chiave SSH smette di funzionare, provare prima di tutto ad accedere all'organizzazione e completare la richiesta di autenticazione completa. Se la chiave SSH non funziona ancora, verificare se è scaduta.

Suggerimento

Per le istanze self-hosted di Azure DevOps Server, usare il nome host appropriato nella Host riga anziché ssh.dev.azure.com o vs-ssh.visualstudio.com.