Utilizzo di Git da PowerShell con credenziali sicure: metodi, trucchi e risoluzione dei problemi

Ultimo aggiornamento: 26/08/2025
Autore: Isaac
  • Dare priorità all'accesso Microsoft OAuth; utilizzare PAT o SSH a seconda del contesto e fare affidamento su Git Credential Manager.
  • Gestisci i segreti in modo sicuro: SecureString/Keyfile in PowerShell e segreti in GitHub Actions.
  • Automatizza con le API Fabric per connetterti, aggiornare e confermare le modifiche, monitorando al contempo le operazioni LRO.
  • Risolvi i problemi di autenticazione in Azure DevOps correggendo GCM, controlli remoti, cache e configurazione di rete.

Git e PowerShell con credenziali sicure

Utilizzare Git in modo sicuro da PowerShell non è solo una questione di comodità, ma è fondamentale per proteggere il codice e le pipeline. Negli scenari che coinvolgono integrazioni con Azure DevOps, GitHub o Microsoft Fabric, un'autenticazione corretta fa la differenza tra un flusso di lavoro robusto e uno vulnerabile.

Questa guida completa e pratica illustra i metodi di autenticazione consigliati (Microsoft OAuth Entra, PAT e SSH), l'utilizzo di Git Credential Manager, l'archiviazione dei segreti con PowerShell, i segreti in GitHub Actions, l'automazione con le API di Fabric e la risoluzione dei problemi comuni di accesso ad Azure DevOps. Il tutto con l'obiettivo di minimizzare i rischi e migliorare la produttività.

Metodi di autenticazione per Git: chiavi OAuth, PAT e SSH

Oggi, per Azure Repos/Azure DevOps, l'approccio preferito è quello di utilizzare i token Microsoft Entra basati su OAuth 2.0, grazie alla loro integrazione aziendale e ai controlli di ambito. In alternativa, è possibile utilizzare i PAT (Personal Access Token) e le chiavi SSH laddove risultino più pratici o necessari.

  • Token OAuth di accesso Microsoft (consigliati): Possono essere ottenuti su richiesta e utilizzati sia con le API Git che REST. Dall'interfaccia della riga di comando di Azure, è possibile accedere e recuperare un token di accesso da aggiungere alle operazioni Git. Ad esempio, con l'autenticazione utente, è possibile recuperare il token con az account get-access-token e applicarlo a Git utilizzando un'intestazione aggiuntiva come http.extraheader con coraggio AUTHORIZATION: bearer (utilizzando “portatore” e il token emesso).
  • Token di accesso personale (PAT): Sono utili quando non si dispone di SSH o non è possibile utilizzare OAuth. Possono essere limitati da permessi e scadenza, riducendo l'esposizione. Per utilizzarli con HTTPS, ricorda che Git richiederà un nome utente (che può essere fittizio) e la password sarà il PAT. Se devi inviare il PAT in un'intestazione o in una stringa, la codifica Base64 è una pratica comune lato client quando il flusso di lavoro lo richiede.
  • Chiavi SSH: Funzionano con una coppia pubblico/privato generata sulla tua macchina. La chiave pubblica è associata al tuo account (ad esempio in Azure DevOps o GitHub) e il server crittografa la comunicazione; la decrittografia avviene tramite l'agente privato locale che non dovrebbe mai essere condiviso. SSH è particolarmente comodo se si utilizza già l'agente SSH, se non si desidera gestire PAT tramite HTTPS o se l'ambiente Linux/macOS/Windows (Git per Windows) si adatta meglio alle chiavi.
  Effetto Google: cos'è, come influisce sulla memoria e come evitarlo

Git Credential Manager: autenticazione senza digitazione costante

CEO di GitHub
24/09/2024 Logo GitHub.
ECONOMIA
SPRUZZARE

Il Git Credential Manager (GCM) memorizza ed emette token su richiesta, evitando così di dover eseguire nuovamente l'autenticazione per ogni operazione. Con GCM installato, è sufficiente effettuare l'accesso una sola volta e il gestore memorizza in modo sicuro il token (Accesso Preferenziale o PAT OAuth) per utilizzarlo con Git e altri client.

Procedure consigliate per GCM : quando si modificano i metodi o si rilevano conflitti, disinstallare le vecchie configurazioni del gestore delle credenziali e riconfigurarle. Successivamente, revocare o ruotare le credenziali quando non sono più necessarie, nel rispetto del principio del minimo privilegio.

Lavorare con repository esistenti: sorgente, PAT e clonazione

Rimuovere il telecomando precedente se è stato configurato con un vecchio metodo (ad esempio nome utente/password). È possibile rimuovere il telecomando con git remote remove origin per evitare conflitti di credenziali prima di aggiungerlo di nuovo.

Aggiungere nuovamente il telecomando con autenticazione L'utilizzo di PAT tramite HTTPS può risolvere i problemi di prompt. Il remoto può essere espresso in un URL con il PAT incorporato nell'utente, oppure è possibile utilizzare GCM per evitare di esporre il token nel testo. Dopo aver aggiunto il remoto, spingere i rami con git push -u origin --all.

Clonazione con Azure DevOps: Il percorso del repository in Azure DevOps include il segmento /_git/L'URL di clonazione tipico è qualcosa del genere https://dev.azure.com/{organization}/{project}/_git/{repository}, tenendo conto di ciò il nome effettivo del repo sostituisce al marcatore corrispondente.

SSH con GitHub: verifica, genera e associa le chiavi

GitHub consente l'autenticazione e la firma di commit e tag tramite SSH. Prima di aggiungere una nuova chiave, verifica se ne hai già una registrata; in caso contrario, generane una nuova e aggiungila all'agente SSH del tuo sistema.

Associando la tua chiave pubblica al tuo account GitHub.com, potrai accedere tramite SSH. Se desideri utilizzare la stessa chiave sia per l'autenticazione che per la firma, dovrai caricarla due volte , una per ciascun scopo. Successivamente, potrai riconfigurare il repository remoto per utilizzare SSH anziché HTTPS.

  Windows Server 2025: ciclo di vita, supporto e modifiche chiave

Automazione con Microsoft Fabric: integrazione dell'API Git

  • Fabric offre API REST per l'integrazione con Git per CI/CD e operazioni comuni: connessione di spazi di lavoro, inizializzazione di connessioni, aggiornamento da Git, commit di modifiche in blocco o selettive e monitoraggio di operazioni di lunga durata.
  • Connessione e aggiornamento di uno spazio di lavoro: dopo l'autenticazione (ad esempio con Connect-AzAccount) e ottieni un token con Get-AzAccessToken, richiama l'API di connessione per associare l'area di lavoro, il repository e il ramo. Quindi, inizializza la connessione con l'API dedicata; a seconda della risposta, potrebbe essere necessario "UpdateFromGit".
  • Aggiornamento da Git comporta la creazione del corpo con il commit remoto e lo stato dell'area di lavoro, l'esecuzione della chiamata e sondare lo stato dell'operazione di lunga durata. Il server restituisce un identificativo dell'operazione e un intervallo di ripetizione, che è possibile controllare periodicamente fino al completamento dell'operazione.
  • Altre operazioni tramite API: Esegui il commit di tutte le modifiche all'area di lavoro, esegui il commit selettivo solo di determinati elementi dopo aver verificato lo stato e sondare le operazioni LRO ottenendo il ID operazione dalle chiamate precedenti per verificare l'andamento.
  • Connessioni delle credenziali per il provider Git: Molte chiamate richiedono un ID connessionePuoi creare una nuova connessione che memorizza un PAT di GitHub come credenziale (limitandola facoltativamente a un repository specifico) o elencare le connessioni esistenti per riutilizzarle idQuesti endpoint restituiscono proprietà come nome da visualizzare, sentiero, tipo di credenziale e altri metadati.
  • Limitazioni da considerare: L'integrazione API eredita le restrizioni dell'interfaccia utente, l'autenticazione del servizio principale è supportata solo per GitHub e certi modelli semantici potrebbe apparire con differenze dopo aggiornamenti migliorati.

Salva le credenziali in modo sicuro con PowerShell

PowerShell consente di crittografare password e segreti e salvarli su disco per un utilizzo successivo negli script. Con Read-Host -AsSecureString È possibile acquisire una credenziale sicura con ConvertFrom-SecureString serializzarlo crittografandolo in un file valido solo per lo stesso utente e computer.

  • Utilizzare con lo stesso utente: la stringa crittografata salvata con ConvertFrom-SecureString può solo decifrato dall'utente che lo ha generato. Per rileggerlo in un copione, fare domanda a Get-Content y ConvertTo-SecureString per ricostruire l'oggetto sicuro nella memoria.
  • File chiave portatile: Se hai bisogno che altri utenti o macchine siano in grado di decifrare il segreto, genera una chiave simmetrica (ad esempio con RNGCryptoServiceProvider) e utilizzarlo con ConvertFrom-SecureString -Key. Si salva la chiave in un file e in seguito, ricostruisci SecureString con ConvertTo-SecureString -Key utilizzando lo stesso file chiave.
  • Crea una PSCredential Dal segreto la lettura è diretta: si combina l'utente e il SecureString en New-Object System.Management.Automation.PSCredentialIn questo modo si parametrizzano il nome utente e la password senza esporre testo in chiaro nello script.
  • Igiene della memoria: nonostante SecureString isola la stringa, ci sono casi in cui la si trasforma in testo per l'interoperabilità. Se si fa questo, liberare la memoria del puntatore con ZeroFreeCoTaskMemUnicode dopo l'uso SecureStringToBSTR y PtrToStringUni, evitare sprechi di memoria.