SERVICII ONLINE

GitHub Permission denied (publickey): cum repari autentificarea SSH

GitHub respinge operațiunea Git cu Permission denied (publickey)? Verifică remote-ul, cheia SSH, agentul și cheia adăugată în cont.

Rezolvarea rapidă: verifică dacă repository-ul folosește SSH, pornește ssh-agent, adaugă cheia privată și confirmă că cheia publică este salvată în contul GitHub corect.

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.