Ce înseamnă Permission denied (publickey)?
Eroarea indică faptul că GitHub a respins conexiunea SSH. De obicei, cheia nu este încărcată, cheia publică nu a fost adăugată în cont sau conexiunea folosește utilizatorul greșit.
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
1. Verifică adresa remote
Rulează în directorul proiectului:
git remote -v
Pentru SSH, adresa trebuie să arate astfel:
git@github.com:utilizator/repository.git
Dacă vrei să schimbi remote-ul:
git remote set-url origin git@github.com:utilizator/repository.git
2. Verifică dacă ai o cheie SSH
Pe macOS sau Linux rulează:
ls -la ~/.ssh
Caută fișiere precum:
id_ed25519
id_ed25519.pub
Fișierul fără extensia .pub este cheia privată și nu trebuie trimis nimănui.
3. Generează o cheie nouă dacă este necesar
ssh-keygen -t ed25519 -C "adresa@email.ro"
Apasă Enter pentru locația implicită și setează o parolă pentru protejarea cheii.
4. Adaugă cheia în ssh-agent
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Pe macOS poți folosi:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
5. Adaugă cheia publică în GitHub
Afișează cheia publică:
cat ~/.ssh/id_ed25519.pub
Copiază întregul rezultat și adaugă-l în GitHub la Settings → SSH and GPG keys → New SSH key.
6. Testează conexiunea
ssh -T git@github.com
La prima conectare poate apărea o întrebare privind cheia serverului. Verifică domeniul și confirmă conexiunea.
Dacă autentificarea funcționează, GitHub va confirma numele contului asociat cheii.
7. Verifică cheia folosită efectiv
Pentru informații detaliate rulează:
ssh -vT git@github.com
Rezultatul arată cheile încercate. Dacă este utilizată cheia greșită, configurează fișierul ~/.ssh/config.
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
Cum verifici rezolvarea?
După ce testul SSH funcționează, execută din nou:
git pull
git push
Nu utiliza sudo pentru comenzile Git, deoarece poți ajunge să folosești cheile SSH ale altui utilizator.