Kako popraviti "Dozvola odbijena (javni ključ)" u GitHub SSH-u

GitHubova trenutna dokumentacija za rješavanje problema s SSH-om, provjerena 13. rujna 2026., i dalje tretira Permission denied (publickey)kao neuspjeh autentifikacije: GitHub je odbio SSH vezu jer nije prihvatio upotrebljiv javni ključ za račun i vezu koju ste predstavili. Najbrži način za rješavanje problema je provjera veze određenim redoslijedom umjesto trenutnog brisanja ključeva ili generiranja novih. Službena stranica za rješavanje problema GitHub-a za odbijen pristup (javni ključ) preporučuje provjeru poslužitelja, SSH korisnika, ponuđenog ključa i je li odgovarajući javni ključ pridružen vašem računu.

Dobar popravak ima dva vidljiva ishoda. Prvo, ssh -T git@github.comidentificira GitHub račun koji ste namjeravali koristiti i izvještava o uspješnoj autentifikaciji. Drugo, stvarna naredba repozitorija - kao što je git fetch, git pull, git pushili git clone- radi s repozitorijem kojem imate ovlaštenje pristupiti. Prolaskom samo prvog testa dokazuje se SSH autentifikacija, a ne dopuštenje za repozitorij.

Brza dijagnostička kontrolna lista

ProvjeritiZdrav rezultatAko ne uspije
Udaljeni URLUpotrebagit@github.com:OWNER/REPOSITORY.gitIspravite hosta ili SSH korisnika prije promjene ključeva
Lokalne ključne datotekePostoji podržani par javnog/privatnog ključaGenerirajte novi par ključeva samo ako nemate onaj koji namjeravate koristiti
SSH agentssh-add -l -E sha256navodi namjeravani ključPokrenite agenta i dodajte privatni ključ
GitHub računOdgovarajući javni ključ pojavljuje se pod SSH i GPG ključevimaDodajte javni ključ ispravnom računu; autorizirajte ga za SSO kada je to potrebno
Test autentifikacijeGitHub pozdravlja očekivano korisničko imeKoristite detaljan SSH izlaz kako biste vidjeli koji se ključ zapravo nudi
Rad repozitorijaDohvaćanje, povlačenje, guranje ili kloniranje je uspješnoProvjerite pristup repozitoriju, identitet računa, jednokratnu prijavu (SSO), udaljeni URL ili mrežna ograničenja

1. Provjerite odredište, SSH korisnika i udaljeni URL

Prije nego što dodirnete tipke, potvrdite da se spajate na GitHub.com i da je SSH korisničko ime doslovno git. GitHub dokumentira da SSH veze na GitHub.com moraju koristiti korisnika, a ne vaše osobno GitHub korisničko ime. Očekuje se da će gitnaredba poput ne uspjeti.ssh -T yourname@github.com

git remote -v
ssh -vT git@github.com

Za normalni GitHub.com SSH daljinski upravljač, URL bi trebao izgledati ovako:

git@github.com:OWNER/REPOSITORY.git

Ako je daljinski upravljač pogrešan, ispravite ga pomoću Gitove konfiguracije daljinskog upravljača umjesto ponovnog generiranja vjerodajnica:

git remote set-url origin git@github.com:OWNER/REPOSITORY.git

Također izbjegavajte pokretanje običnih Git naredbi s sudoili s povećanim privilegijama. GitHub napominje da to može uzrokovati da Git radi u drugom korisničkom okruženju i stoga koristi drugačije SSH ključeve od onih koje ste konfigurirali. Cilj u ovoj fazi je jednostavan: detaljan izlaz trebao bi prikazati pokušaj povezivanja na github.comportu 22, osim ako niste namjerno konfigurirali zaobilazno rješenje HTTPS porta opisano kasnije.

2. Potvrdite da postoji upotrebljiv ključ i da je učitan

Prije nego što stvorite nešto novo, provjerite svoj lokalni SSH direktorij. Trenutne smjernice GitHuba preporučuju da prvo potražite postojeći podržani par ključeva.

ls -al ~/.ssh
Terminalski prikaz s popisom postojećeg privatnog ključa id_ed25519 i javnog ključa id_ed25519.pub u SSH direktoriju
Prije generiranja novog ključa provjerite SSH direktorij za odgovarajući par privatnog i javnog ključa.

Uobičajeni zadani nazivi datoteka javnog ključa uključuju id_ed25519.pub, id_ecdsa.pubi id_rsa.pub. GitHub više ne podržava DSA ključeve. Ako već imate par ključeva koji namjeravate koristiti za GitHub, zadržite ga i nastavite s provjerom agenta.

ssh-add -l -E sha256

Ispravan rezultat navodi jedan ili više otisaka prstiju. Ako željeni ključ nije učitan, pokrenite SSH agent prema potrebi za vaše okruženje i dodajte privatni ključ:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Pokretanje ssh-agenta u terminalu i dodavanje privatnog ključa id_ed25519
Učitajte privatni ključ u ssh-agent kako bi ga SSH klijent mogao ponuditi tijekom GitHub autentifikacije.

U sustavu Windows, točna naredba agent-start ovisi o tome koristite li Git Bash, Windows OpenSSH, PowerShell ili neko drugo okruženje. Službeni vodič za generiranje ključeva i ssh-agent na GitHubu pruža upute specifične za platformu. Slijedite odjeljak za SSH klijent koji zapravo koristite; miješanje Gitovog SSH-a za Windows s Windows OpenSSH-om čest je izvor zabune.

Ako nemate par ključeva

Generirajte ga samo kada prethodna provjera pokaže da nemate odgovarajući ključ koji želite koristiti. Trenutne upute GitHuba preporučuju Ed25519 za standardni softverski ključ kada je podržan:

ssh-keygen -t ed25519 -C "your_email@example.com"

Koristite lozinku ako odgovara vašim sigurnosnim zahtjevima. SSH agent može pohraniti otključani privatni ključ u predmemoriju za vašu sesiju. Nikada ne prenosite niti lijepite samu datoteku privatnog ključa u GitHub; datoteka koja završava na .pubje javni ključ namijenjen za registraciju računa.

3. Priložite odgovarajući javni ključ ispravnom GitHub računu

Nije dovoljno imati lokalni ključ. GitHub mora imati odgovarajući javni ključ povezan s računom koji treba autentificirati. Prikažite javni ključ, a zatim kopirajte cijeli redak:

cat ~/.ssh/id_ed25519.pub

U GitHubu otvorite Postavke , zatim SSH i GPG ključeve , odaberite Novi SSH ključ ili Dodaj SSH ključ , odaberite ključ za autentifikaciju i zalijepite javni ključ. Ove oznake odgovaraju trenutnoj službenoj dokumentaciji GitHuba za dodavanje SSH ključa .

Prikaz postavki GitHuba s odabranim SSH i GPG ključevima i dodavanjem novog autentifikacijskog ključa
Dodajte javni ključ, a ne privatni ključ, GitHub računu koji bi trebao autentificirati SSH vezu.

Usporedite otiske prstiju kada niste sigurni koji lokalni ključ odgovara unosu na GitHubu:

ssh-add -l -E sha256

Ako repozitorij pripada organizaciji koja koristi SAML jednokratnu prijavu, dodavanje ključa vašem računu možda neće biti dovoljno. GitHub dokumentira da SSH ključ također može zahtijevati autorizaciju organizacije. U Postavkama > SSH i GPG ključevi upotrijebite Konfiguriraj SSO za ključ i autorizirajte relevantnu organizaciju kada je ta kontrola dostupna. Pogledajte GitHubov vodič za autorizaciju SSO ključa za SSH .

4. Testirajte autentifikaciju neovisno o Gitu

Ne koristite git pushkao jedini test. Testirajte SSH izravno:

ssh -T git@github.com
Terminal koji prikazuje GitHub SSH testnu naredbu i uspješnu pozdravnu poruku za autentifikaciju
Uspješan SSH test identificira autentificirani GitHub račun i potvrđuje da razmjena ključeva funkcionira.

Poruka o uspjehu trebala bi pozdraviti vaše korisničko ime na GitHubu i objasniti da GitHub ne omogućuje pristup ljusci. GitHub također napominje da se ovaj test može završiti sa statusnim kodom 1 čak i kada autentifikacija uspije, stoga ga procijenite prema poruci o autentifikaciji umjesto da očekujete normalnu interaktivnu ljusku.

Ako test i dalje završava u Permission denied (publickey), pokrenite opširni način rada:

ssh -vT git@github.com

Potražite retke poput Offering public key. Ako zapisnik nikada ne ponudi ključ koji ste očekivali, problem je u lokalnom odabiru ključa ili konfiguraciji agenta. Ako je željeni ključ ponuđen, ali odbijen, provjerite je li taj javni ključ pridružen ispravnom GitHub računu i je li potrebna SSO autorizacija.

Više GitHub računa: provjerite koji se identitet zapravo koristi

Ako koristite poslovne i osobne račune na istom računalu, uspješna SSH autentifikacija i dalje može završiti na pogrešnom računu. GitHub dokumentira korištenje IdentitiesOnly=yesili određenu datoteku identiteta za kontrolu ključa koji SSH nudi. Za jednokratnu dijagnostiku:

ssh -v -o "IdentitiesOnly=yes" -i ~/.ssh/work_ed25519 git@github.com

Ako GitHub primi pogrešno korisničko ime, pronašli ste neusklađenost. Konfigurirajte odvojene ključeve ili aliase hosta umjesto da ih opetovano brišete i ponovno dodajete. Službeni vodič za više računa GitHuba detaljnije pokriva ovaj slučaj.

5. Ponovno pokušajte naredbu repozitorija, a zatim promijenite pristup samo ako dokazi upućuju na nešto drugo

Nakon što ssh -T git@github.comse autentificira kao očekivani korisnik, ponovno pokušajte stvarnu operaciju repozitorija:

git fetch origin
git pull
git push
Terminalski prikaz koji prikazuje uspješno dovršenje GitHub SSH klona nakon ispravljanja autentifikacije
Završna provjera kvalitete je prava Git operacija: uspješna autentifikacija trebala bi se prevesti u uspješan pristup repozitoriju kada račun ima dopuštenje.

Ako SSH autentifikacija uspije, ali Git sada prijavi grešku dozvole specifične za repozitorij, prestanite mijenjati SSH ključ. U tom trenutku ključ je već obavio svoj posao. Provjerite ima li autentificirani račun pristup repozitoriju, jesu li vlasnik i naziv repozitorija u udaljenom URL-u ispravni i je li organizacija dodijelila potrebnu ulogu. GitHubova zasebna stranica za rješavanje problema s dozvolama repozitorija objašnjava slučaj u kojem ključ pripada računu bez pristupa.

Ako je port 22 blokiran

Vatrozid ili proxy mogu spriječiti valjanu SSH postavku da dođe do GitHuba na portu 22. Testirajte GitHubovu dokumentiranu krajnju točku SSH-over-HTTPS:

ssh -T -p 443 git@ssh.github.com

Naziv hosta je ssh.github.com, a ne github.com, za ovaj izravni test porta-443. Ako radi, GitHub dokumentira ovu SSH konfiguraciju:

Host github.com
    Hostname ssh.github.com
    Port 443
    User git

Zatim ponovno testirajte s ssh -T git@github.com. Pogledajte GitHubov vodič za SSH preko porta 443. Ovo zaobilazno rješenje ne odnosi se na svako GitHub Enterprise okruženje, a proxy poslužitelji i dalje mogu ometati.

Kako znati kada prestati pokušavati s istim rješenjem

Ono što opažateŠto to značiSljedeći potez
ssh-add -lne prikazuje namjeravani ključKlijent ne može ponuditi ispravan privatni ključIspravite agenta ili put ključa
Opširni SSH se nikad ne prikazuje Offering public keyza željeni ključOdabir SSH-a je pogrešanKoristite -i, IdentitiesOnly=yesili ispravite~/.ssh/config
Namjeravani ključ je ponuđen, ali odbijenGitHub ne prihvaća taj ključ za pokušani identitetProvjerite preneseni javni ključ, ciljni račun i SSO autorizaciju
SSH pozdravlja pogrešno korisničko ime na GitHubuKoristi se ključ drugog računaOdvojite ključeve računa i eksplicitno odaberite željeni identitet
SSH uspijeva, ali repozitorij odbija push ili fetchAutentifikacija radi; problem je sada u autorizaciji repozitorija ili URL-u.Provjerite pristup repozitoriju i udaljeno vlasništvo
Port 22 se uopće ne može spojitiMreža možda blokira standardni SSHTestirajte port 443 ili koristite HTTPS

Uobičajeni popravci koji često gube vrijeme

Generiranje ključa za ključem bez provjere što SSH nudi. Više ključeva može otežati odabir. Prvo koristite ssh -vTi ssh-add -l -E sha256.

Korištenje vašeg GitHub korisničkog imena prije @github.com. GitHubova SSH krajnja točka očekuje SSH korisnika git. Vaš GitHub identitet određen je javnim ključem koji GitHub prepoznaje.

Prijenos privatnog ključa. Nemojte to raditi. GitHub treba javnu .pubvrijednost; privatni ključ ostaje na vašem računalu ili odobrenom mjestu za pohranu ključeva.

Pod pretpostavkom uspješnog SSH testa jamči se push pristup. To dokazuje autentifikaciju računa. Autorizacija repozitorija je zasebna provjera.

Ignoriranje SSO-a. Resursi organizacije mogu zahtijevati dodatnu autorizaciju SSH ključem čak i kada je ključ prisutan na vašem osobnom računu.

Korištenje povišenih Git naredbi. Pokretanje Gita kao drugi OS korisnik može promijeniti koji se početni direktorij, SSH konfiguracija, agent i ključevi koriste.

Kada je HTTPS bolje rješenje

SSH nije obavezan. GitHub također podržava HTTPS daljinske uređaje. Ako zaključana korporativna mreža, politika upravljanih krajnjih točaka ili proxy čine SSH nepraktičnim, prebacivanje udaljenog repozitorija na HTTPS može biti jednostavnije nego borba protiv mreže. To je promjena metode autentifikacije, a ne popravak SSH konfiguracije, stoga ga koristite kada vaše okruženje čini SSH nepoželjnim, a ne kao način skrivanja neriješene neusklađenosti ključeva.

Za SSH, najpouzdanija točka zaustavljanja temelji se na dokazima: očekivani ključ je učitan, GitHub ga prepoznaje kao očekivani račun, organizacija ga autorizira kada je potrebno i stvarna Git operacija uspijeva. Ako jedna od tih provjera ne uspije, promijenite samo sloj koji nije uspio. To kontrolira proces rješavanja problema i izbjegava nepotrebnu zamjenu radnih ključeva.

Službene reference

Ostavite komentar

Kako popraviti grešku "Tailwind CSS stilovi se ne ažuriraju" u Vite React aplikaciji

Kako popraviti grešku "Tailwind CSS stilovi se ne ažuriraju" u Vite React aplikaciji

Ispravite Tailwind CSS stilove koji se ne ažuriraju u Vite Reactu provjerom postavki Tailwind v4, CSS uvoza, otkrivanja izvora, dinamičkih klasa, HMR-a i zastarjelih predmemorija.

Kako popraviti ModuleNotFoundError: Nema modula pod nazivom 'pip' u Pythonu 3

Kako popraviti ModuleNotFoundError: Nema modula pod nazivom 'pip' u Pythonu 3

Ispravite ModuleNotFoundError u Pythonu 3 za pip na Windowsima, macOS-u i Linuxu pomoću ensurepipa, OS paketa, virtualnih okruženja i provjera interpretera.

Kako popraviti "Dozvola odbijena (javni ključ)" u GitHub SSH-u

Kako popraviti "Dozvola odbijena (javni ključ)" u GitHub SSH-u

Ispravite GitHub SSH Permission Denied (publickey) provjerom hosta, aktivnog SSH ključa, GitHub računa, SSO autorizacije, udaljenog URL-a i pristupa portu 22.

Kako popraviti "Git Push Rejected: Non-FastForward" bez gubitka promjena

Kako popraviti "Git Push Rejected: Non-FastForward" bez gubitka promjena

Sigurno ispravite Git push koji ne omogućuje brzo premotavanje. Zaštitite lokalni rad, dohvatite udaljene commitove, odaberite spajanje ili rebase, riješite sukobe i pushajte bez gubitka promjena.

Kako popraviti "Nginx 502 Bad Gateway" prilikom proxyja za Node.js

Kako popraviti "Nginx 502 Bad Gateway" prilikom proxyja za Node.js

Ispravite greške Nginx 502 Bad Gateway s Node.js uzvodno provjerom porta aplikacije, NGINX logova, proxy_pass adrese, umrežavanja kontejnera, vremenskih ograničenja i ponovnog učitavanja.

Kako popraviti "Tip 'null' se ne može dodijeliti tipu" u TypeScriptu

Kako popraviti "Tip 'null' se ne može dodijeliti tipu" u TypeScriptu

Ispravljena je greška "Tip 'null' nije moguće dodijeliti tipu" u TypeScriptu s tipovima unija, sužavanjem, zadanim vrijednostima i sigurnim tvrdnjama pod strictNullChecks.

Kako ispraviti pogrešku „Prisma Client has not been generated yet”

Kako ispraviti pogrešku „Prisma Client has not been generated yet”

Ispravite pogrešku da Prisma Client nije generiran provjerom generatora, sheme, izlazne putanje, uvoza, verzija, monorepo postavki i koraka izgradnje pri implementaciji.

Kako ispraviti "ERR_MODULE_NOT_FOUND" u Node.js ESM uvozima

Kako ispraviti "ERR_MODULE_NOT_FOUND" u Node.js ESM uvozima

Ispravite Node.js ERR_MODULE_NOT_FOUND u ESM-u provjerom putanja uvoza, ekstenzija datoteka, instalacije paketa, izvoza, ESM načina rada i čistih instalacija.

Kako riješiti problem sa SSL certifikatom: Nemoguće dobiti lokalni certifikat izdavatelja u Gitu

Kako riješiti problem sa SSL certifikatom: Nemoguće dobiti lokalni certifikat izdavatelja u Gitu

Riješite Gitovu grešku 'nemoguće dobiti lokalni certifikat izdavatelja' identificiranjem pozadine povjerenja, instaliranjem ispravnog lanca CA i održavanjem omogućene SSL verifikacije.

Kako riješiti grešku mrežnog isteka vremena MongoDB u Mongoose vezi

Kako riješiti grešku mrežnog isteka vremena MongoDB u Mongoose vezi

Riješite greške mrežnog isteka vremena MongoDB u Mongooseu identificiranjem vrste isteka, testiranjem dostupnosti Atlasa ili TCP-a, ispravljanjem URI-ja i podešavanjem vremena isteka samo kada je opravdano.