git / Guide

Git SSH: risolvere Permission denied (publickey)

Questo errore indica che il server SSH ha rifiutato l’autenticazione. Gli esempi riguardano github.com; altri provider e host aziendali possono richiedere impostazioni diverse.

Esempi per Bash; consulta i riferimenti per i dettagli del tuo ambiente.

git — Cheat sheet

Controlla remoto e protocollo

Esegui il comando dentro il repository. Un remoto HTTPS usa credenziali HTTPS: correggere una chiave SSH non cambia quella connessione. Un URL SSH GitHub inizia normalmente con git@github.com:.

git remote -v

Su github.com l’utente SSH è git, non il nome del tuo account. Verifica proprietario e nome del repository prima di modificare il remoto. Cambiare protocollo può nascondere la causa dell’errore.

Controlla le chiavi disponibili nell’agent

Elenca le identità disponibili nell’agent SSH della sessione. Un messaggio di assenza di identità è diverso da un agent non raggiungibile. La configurazione dell’agent dipende da sistema operativo e terminale.

ssh-add -l

Se la chiave esistente non è caricata, aggiungi il suo percorso effettivo, per esempio ssh-add ~/.ssh/id_ed25519. Registra la corrispondente chiave pubblica .pub nell’account GitHub corretto. Conserva la chiave privata sul dispositivo, senza incollarla in un sito.

Prova l’autenticazione con GitHub

Prima di accettare una nuova chiave del server, confrontane l’impronta con quelle SSH pubblicate da GitHub, raggiungibili dalla guida ufficiale qui sotto. Poi esegui il test.

ssh -T git@github.com

Il messaggio di successo GitHub indica il tuo account e precisa che non offre accesso shell. Un test riuscito termina normalmente con codice 1. Se l’autenticazione fallisce ancora, ssh -vT git@github.com mostra le identità proposte. Usare Git tramite sudo può selezionare le chiavi di un altro utente.

Distingui autenticazione e accesso al repository

Dopo un test SSH riuscito, verifica la lettura del repository. Questo comando elenca i riferimenti remoti senza modificare i branch locali.

git ls-remote origin

L’account autenticato deve avere anche accesso al repository. Controlla l’URL, l’appartenenza all’organizzazione e l’eventuale autorizzazione SSO. Una deploy key può essere limitata a un repository. Se non esiste una chiave, segui la configurazione del provider senza sovrascriverne una esistente.

Riferimenti

Tutte le guide