A „Hozzáférés megtagadva (nyilvános kulcs)” hiba javítása a GitHub SSH-ban

A GitHub jelenlegi, 2026. szeptember 13-án ellenőrzött SSH hibaelhárítási dokumentációja továbbra is Permission denied (publickey)hitelesítési hibaként kezeli a következőt: A GitHub elutasította az SSH-kapcsolatot, mert nem fogadott el használható nyilvános kulcsot a megadott fiókhoz és kapcsolathoz. A leggyorsabb megoldás a kapcsolatok ellenőrzése egy adott sorrendben, a kulcsok azonnali törlése vagy újak generálása helyett. A GitHub hivatalos „ Engedély megtagadva” (publikus kulcs) hibaelhárítási oldala azt javasolja, hogy ellenőrizd a szervert, az SSH-felhasználót, a felajánlott kulcsot, és azt, hogy a megfelelő nyilvános kulcs hozzá van-e rendelve a fiókodhoz.

Egy jó javításnak két megfigyelhető eredménye van. Először is, ssh -T git@github.comazonosítja a használni kívánt GitHub-fiókot, és sikeres hitelesítést jelent. Másodszor, a tényleges repository parancs – például a git fetch, git pull, git pushvagy git clone– azzal a repositoryval működik, amelyhez jogosult vagy hozzáférni. Csak az első teszt sikeres teljesítése bizonyítja az SSH-hitelesítést, nem pedig a repository engedélyét.

Gyors diagnosztikai ellenőrzőlista

EllenőrzésEgészséges eredményHa nem sikerül
Távoli URLFelhasználásgit@github.com:OWNER/REPOSITORY.gitKulcsok módosítása előtt javítsa ki a gazdagépet vagy az SSH felhasználót
Helyi kulcsfájlokLétezik egy támogatott nyilvános/privát kulcspárCsak akkor generáljon új kulcspárt, ha nincs olyan, amelyet használni kíván.
SSH-ügynökssh-add -l -E sha256felsorolja a kívánt kulcsotIndítsd el az ügynököt, és add hozzá a privát kulcsot
GitHub-fiókA megfelelő nyilvános kulcs az SSH és GPG kulcsok alatt jelenik meg.Add hozzá a nyilvános kulcsot a megfelelő fiókhoz; engedélyezd az egyszeri bejelentkezést, ha szükséges.
Hitelesítési tesztA GitHub üdvözli a várt felhasználónevetHasználjon részletes SSH kimenetet, hogy lássa, melyik kulcsot kínálja fel a rendszer
Adattár működéseA lekérés, lehívás, küldés vagy klónozás sikeresEllenőrizze a tárház hozzáférését, a fiók identitását, az egyszeri bejelentkezést, a távoli URL-címet vagy a hálózati korlátozásokat

1. Ellenőrizze a célt, az SSH-felhasználót és a távoli URL-címet

Mielőtt megérintenéd a billentyűket, ellenőrizd, hogy a GitHub.com-hoz csatlakozol-e, és hogy az SSH felhasználónév szó szerint git. A GitHub dokumentálja, hogy a GitHub.com-hoz való SSH kapcsolatoknak a felhasználónevet kell használniuk git, nem a személyes GitHub felhasználónevedet. Egy olyan parancs, mint ssh -T yourname@github.coma várhatóan sikertelen lesz.

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

Egy normál GitHub.com SSH távoli eszköz esetén az URL-nek így kell kinéznie:

git@github.com:OWNER/REPOSITORY.git

Ha a távoli cím hibás, javítsd ki a Git távoli konfigurációjával a hitelesítő adatok újragenerálása helyett:

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

Kerüld a szokásos Git-parancsok futtatását sudoemelt jogosultságokkal vagy jogosultságokkal. A GitHub megjegyzi, hogy ha mégis megteszed, a Git más felhasználói környezetben futhat, és ezért más SSH-kulcsokat használhat, mint amelyeket konfiguráltál. A cél ebben a szakaszban egyszerű: a részletes kimenetnek a github.com22-es porton történő kapcsolódási kísérletet kell mutatnia, kivéve, ha szándékosan konfiguráltad a később ismertetett HTTPS portmegoldást.

2. Győződjön meg arról, hogy létezik és be van töltve egy használható kulcs

Mielőtt bármi újat hoznál létre, ellenőrizd a helyi SSH könyvtárat. A GitHub jelenlegi útmutatója azt javasolja, hogy először keress egy meglévő támogatott kulcspárt.

ls -al ~/.ssh
Terminálnézet, amely egy meglévő id_ed25519 privát kulcsot és id_ed25519.pub nyilvános kulcsot listáz az SSH könyvtárban
Újabb kulcs generálása előtt ellenőrizd az SSH könyvtárat, hogy van-e egyező privát kulcs és nyilvános kulcspár.

Az alapértelmezett nyilvános kulcsfájlnevek közé tartozik id_ed25519.puba , id_ecdsa.pubés id_rsa.pub. A GitHub már nem támogatja a DSA kulcsokat. Ha már van egy kulcspárja, amelyet a GitHubhoz használni kíván, tartsa meg, és folytassa az ügynök ellenőrzését.

ssh-add -l -E sha256

Egy egészséges eredmény egy vagy több ujjlenyomatot tartalmaz. Ha a kívánt kulcs nincs betöltve, indítsa el az SSH-ügynököt a környezetének megfelelően, és adja hozzá a privát kulcsot:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Terminál nézetben indítsa el az ssh-agentet és adja hozzá az id_ed25519 privát kulcsot
Töltsd be a privát kulcsot az ssh-agentbe, hogy az SSH kliens fel tudja ajánlani azt a GitHub hitelesítés során.

Windows rendszeren a pontos agent-start parancs attól függ, hogy Git Bash-t, Windows OpenSSH-t, PowerShell-t vagy más környezetet használsz. A GitHub hivatalos kulcsgenerálási és ssh-agent útmutatója platformspecifikus utasításokat tartalmaz. Kövesd az általad használt SSH klienshez tartozó részt; a Git for Windows SSH-jának és a Windows OpenSSH-nak a keverése gyakori zavarforrás.

Ha nincs kulcspárja

Csak akkor generálj egyet, ha a korábbi ellenőrzés azt mutatja, hogy nincs megfelelő kulcsod, amit használni szeretnél. A GitHub jelenlegi utasításai az Ed25519-et javasolják szabványos szoftverkulcsként, amennyiben támogatott:

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

Használjon jelszót, ha az megfelel a biztonsági igényeinek. Az SSH ügynök gyorsítótárazhatja a munkamenet feloldott privát kulcsát. Soha ne töltse fel vagy illessze be magát a privát kulcsfájlt a GitHubba; a végződésű fájl .puba fiók regisztrációjához használt nyilvános kulcs.

3. Csatolja a megfelelő nyilvános kulcsot a megfelelő GitHub-fiókhoz

A helyi kulcs megléte nem elég. A GitHubnak rendelkeznie kell a hitelesítéshez használt fiókhoz tartozó megfelelő nyilvános kulccsal. Jelenítse meg a nyilvános kulcsot, majd másolja ki a teljes sort:

cat ~/.ssh/id_ed25519.pub

A GitHubban nyisd meg a Beállításokat , majd az SSH és GPG kulcsok lehetőséget , válaszd az Új SSH kulcs vagy az SSH kulcs hozzáadása lehetőséget , válassz ki egy hitelesítési kulcsot, és illeszd be a nyilvános kulcsot. Ezek a címkék megegyeznek a GitHub aktuális hivatalos SSH-kulcs hozzáadása dokumentációjával .

GitHub beállítások nézet kiválasztott SSH és GPG kulcsokkal, valamint egy új hitelesítési kulcs hozzáadásával
Add hozzá a nyilvános kulcsot – ne a privát kulcsot – ahhoz a GitHub-fiókhoz, amelynek hitelesítenie kell az SSH-kapcsolatot.

Hasonlítsa össze az ujjlenyomatokat, ha nem biztos benne, hogy melyik helyi kulcs felel meg a GitHub-on található bejegyzésnek:

ssh-add -l -E sha256

Ha a tárház egy olyan szervezethez tartozik, amely SAML egyszeri bejelentkezést használ, akkor a kulcs fiókhoz való hozzáadása nem biztos, hogy elegendő. A GitHub dokumentálja, hogy egy SSH-kulcshoz szervezeti hitelesítés is szükséges lehet. A Beállítások > SSH és GPG-kulcsok menüpontban használja az SSO konfigurálása lehetőséget a kulcshoz, és hitelesítse a megfelelő szervezetet, ha ez a vezérlő elérhető. Lásd a GitHub SSH-kulcs SSO-hitelesítési útmutatóját .

4. Hitelesítés tesztelése a Gittől függetlenül

Ne használd git pushegyetlen tesztként. Teszteld közvetlenül az SSH-t:

ssh -T git@github.com
Terminál, amelyen a GitHub SSH test parancs és egy sikeres hitelesítési üdvözlet látható
Egy sikeres SSH-teszt azonosítja a hitelesített GitHub-fiókot, és megerősíti, hogy a kulcscsere működik.

A sikerüzenetnek üdvözölnie kell a GitHub felhasználónevedet, és el kell magyaráznia, hogy a GitHub nem biztosít shell hozzáférést. A GitHub azt is megjegyzi, hogy ez a teszt sikeres hitelesítés esetén is 1-es állapotkóddal fejeződhet be, ezért a hitelesítési üzenet alapján ítéld meg, ne pedig egy normál interaktív shellre számíts.

Ha a teszt továbbra is karakterrel végződik Permission denied (publickey), futtassa a részletes módot:

ssh -vT git@github.com

Keressen az olyan sorokat, mint például a Offering public key. Ha a napló soha nem kínálja fel a várt kulcsot, a probléma a helyi kulcskiválasztással vagy az ügynök konfigurációjával van. Ha a kívánt kulcsot felajánlja a rendszer, de elutasítja, ellenőrizze, hogy a nyilvános kulcs a megfelelő GitHub-fiókhoz van-e csatolva, és hogy szükséges-e az SSO-hitelesítés.

Több GitHub-fiók: ellenőrizze, hogy melyik identitást használják valójában

Ha munkahelyi és személyes fiókokat használ ugyanazon a számítógépen, a sikeres SSH-hitelesítés továbbra is rossz fiókhoz érkezhet. A GitHub IdentitiesOnly=yesegy adott azonosítófájl használatával dokumentálja, amely szabályozza, hogy az SSH melyik kulcsot kínálja. Egyszeri diagnosztikához:

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

Ha a GitHub rossz felhasználónevet üdvözöl, akkor megtaláltad az eltérést. Konfigurálj külön kulcsokat vagy host aliasokat a kulcsok ismételt törlése és újbóli hozzáadása helyett. A GitHub hivatalos többfiókos útmutatója részletesebben tárgyalja ezt az esetet.

5. Próbáld újra a repository parancsot, majd csak akkor változtass a megközelítésen, ha a bizonyítékok másra mutatnak

Miután ssh -T git@github.coma várt felhasználóként hitelesítette magát, próbálja meg újra a tényleges adattárműveletet:

git fetch origin
git pull
git push
Kijavítottuk a GitHub SSH klón sikeres befejeződését a hitelesítés után mutató terminálnézet hibát
A végső minőségellenőrzés a valódi Git-művelet: a sikeres hitelesítésnek sikeres adattár-hozzáférést kell jelentenie, amikor a fiók rendelkezik engedéllyel.

Ha az SSH hitelesítés sikeres, de a Git most egy adattár-specifikus jogosultsági hibát jelez, akkor hagyd abba az SSH-kulcs módosítását. Ezen a ponton a kulcs már elvégezte a feladatát. Ellenőrizd, hogy a hitelesített fiók hozzáfér-e az adattárhoz, hogy a tulajdonos és az adattár neve helyes-e a távoli URL-ben, és hogy a szervezet megadta-e a szükséges szerepkört. A GitHub különálló adattár-engedélyekkel kapcsolatos hibaelhárítási oldala elmagyarázza azt az esetet, amikor a kulcs egy hozzáféréssel nem rendelkező fiókhoz tartozik.

Ha a 22-es port blokkolva van

Egy tűzfal vagy proxy megakadályozhatja, hogy egy érvényes SSH-beállítás elérje a GitHubot a 22-es porton. Teszteld a GitHub dokumentált SSH-over-HTTPS végpontját:

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

A hosztnév ssh.github.com, nem pedig github.comehhez a közvetlen 443-as portteszthez. Ha működik, a GitHub dokumentálja ezt az SSH konfigurációt:

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

Ezután próbáld újra a következővel ssh -T git@github.com: . Lásd a GitHub SSH 443-as porton keresztüli használatáról szóló útmutatóját . Ez a kerülő megoldás nem vonatkozik minden GitHub Enterprise környezetre, és a proxykiszolgálók továbbra is zavarhatják a működést.

Hogyan tudhatjuk, mikor kell abbahagyni ugyanazon megoldás kipróbálását?

Amit megfigyelszMit jelentKövetkező lépés
ssh-add -lnem mutatja a kívánt kulcsotAz ügyfél nem tudja megadni a megfelelő privát kulcsotAz ügynök vagy a kulcs elérési útjának javítása
A részletes SSH soha nem jelenik Offering public keymeg a kívánt kulcshozAz SSH kiválasztása helytelenHasználja a -i, IdentitiesOnly=yes, vagy javítsa ki a~/.ssh/config
A kívánt kulcsot felajánlják, de elutasítjákA GitHub nem fogadja el ezt a kulcsot a megkísérelt identitáshoz.Ellenőrizze a feltöltött nyilvános kulcsot, a célfiókot és az SSO-engedélyezést
Az SSH rossz GitHub felhasználónevet üdvözölEgy másik fiók kulcsát használjákA fiókkulcsok elkülönítése és a kívánt identitás explicit kiválasztása
Az SSH sikeres, de a tárház elutasítja a push vagy fetch parancsokat.A hitelesítés működik; a probléma most a tárház hitelesítése vagy az URL-címe.Ellenőrizze a tárház elérését és a távoli tulajdonjogot
A 22-es port egyáltalán nem tud csatlakozniLehetséges, hogy a hálózat blokkolja a szabványos SSH-tTesztelje a 443-as portot, vagy használjon HTTPS-t

Gyakori javítások, amelyek gyakran időt pazarolnak

Kulcsról kulcsra generálunk kulcsot anélkül, hogy ellenőriznénk, mit kínál az SSH. Több kulcs megnehezítheti a választást. Először ssh -vTaz és a kulcsokat használjuk ssh-add -l -E sha256.

A GitHub felhasználóneved használata a `` előtt.`` @github.comA GitHub SSH végpontja az SSH felhasználót várja git. A GitHub identitását a GitHub által felismert nyilvános kulcs határozza meg.

A privát kulcs feltöltése. Ezt ne tedd. A GitHubnak szüksége van a nyilvános .pubértékre; a privát kulcs a gépeden vagy a jóváhagyott kulcstárolóban marad.

Egy sikeres SSH teszt push hozzáférést garantál. Ez igazolja a fiók hitelesítését. A tárház engedélyezése külön ellenőrzés.

Egyszeri bejelentkezés figyelmen kívül hagyása. A szervezeti erőforrások további SSH-kulcs-hitelesítést igényelhetnek, még akkor is, ha a kulcs a személyes fiókjában van.

Emelt szintű Git-parancsok használata. A Git másik operációs rendszerfelhasználóként történő futtatásával módosítható, hogy melyik kezdőkönyvtárat, SSH-konfigurációt, ügynököt és kulcsokat használja.

Amikor a HTTPS a jobb válasz

Az SSH nem kötelező. A GitHub a HTTPS távoli elérésű szervereket is támogatja. Ha egy lezárt vállalati hálózat, felügyelt végpont-szabályzat vagy proxy miatt az SSH nem praktikus, a távoli szerver HTTPS-re váltása egyszerűbb lehet, mint a hálózattal való harc. Ez a hitelesítési módszer megváltoztatása, nem az SSH-konfiguráció javítása, ezért akkor használd, ha a környezeted miatt az SSH nemkívánatos, ahelyett, hogy egy megoldatlan kulcseltérés elrejtésére használnád.

Az SSH esetében a legmegbízhatóbb megállás a bizonyítékokon alapul: a várt kulcs betöltődik, a GitHub felismeri a várt fiókként, a szervezet szükség esetén engedélyezi azt, és a valódi Git-művelet sikeres. Ha az egyik ellenőrzés sikertelen, akkor csak a hibás réteget kell módosítani. Ezáltal a hibaelhárítási folyamat kontroll alatt marad, és elkerülhető a működő kulcsok szükségtelen cseréje.

Hivatalos hivatkozások

Hagyj kommentárt

How to Fix "Tailwind CSS Styles Not Updating" in a Vite React App

How to Fix "Tailwind CSS Styles Not Updating" in a Vite React App

Fix Tailwind CSS styles not updating in Vite React by checking Tailwind v4 setup, CSS imports, source detection, dynamic classes, HMR, and stale caches.

Hogyan javítsuk ki a ModuleNotFoundError hibát: Nincs 'pip' nevű modul Python 3-ban

Hogyan javítsuk ki a ModuleNotFoundError hibát: Nincs 'pip' nevű modul Python 3-ban

Javítsd ki a Python 3 ModuleNotFoundError hibáját a pip esetében Windows, macOS és Linux rendszereken ensurepip, operációsrendszer-csomagok, virtuális környezetek és interpreter-ellenőrzések segítségével.

A „Hozzáférés megtagadva (nyilvános kulcs)” hiba javítása a GitHub SSH-ban

A „Hozzáférés megtagadva (nyilvános kulcs)” hiba javítása a GitHub SSH-ban

Javítsd ki a GitHub SSH engedély megtagadva (nyilvános kulcs) hibát a gazdagép, az aktív SSH kulcs, a GitHub fiók, az SSO-engedélyezés, a távoli URL és a 22-es port hozzáférésének ellenőrzésével.

Hogyan javítsuk ki a „Git Push elutasítva: nem gyorsított előretekerés” hibát a változtatások elvesztése nélkül

Hogyan javítsuk ki a „Git Push elutasítva: nem gyorsított előretekerés” hibát a változtatások elvesztése nélkül

Git nem gyorsított push hiba javítása biztonságosan. Helyi munka védelme, távoli commitok beolvasása, egyesítés vagy újraalapozás kiválasztása, ütközések feloldása és push végrehajtása a változtatások elvesztése nélkül.

Hogyan javítsuk ki az „Nginx 502 Bad Gateway” hibát Node.js proxy használatakor

Hogyan javítsuk ki az „Nginx 502 Bad Gateway” hibát Node.js proxy használatakor

Javítsd ki az Nginx 502 Bad Gateway hibákat egy Node.js upstream fájllal az alkalmazásport, az NGINX naplók, a proxy_pass cím, a konténerhálózat, az időtúllépések és az újratöltés ellenőrzésével.

Hogyan javítsuk ki a „Type 'null' Is Not Assignable to Type” hibát TypeScriptben?

Hogyan javítsuk ki a „Type 'null' Is Not Assignable to Type” hibát TypeScriptben?

Kijavítottuk a TypeScript „A 'null' típus nem rendelhető típushoz” hibáját uniótípusokkal, szűkítéssel, alapértelmezett értékekkel és biztonságos állításokkal a strictNullChecks alatt.

Hogyan javítsuk ki a „Prisma Client has not been generated yet” hibát

Hogyan javítsuk ki a „Prisma Client has not been generated yet” hibát

Javítsa ki a Prisma Client nem generált hibát a generátor, a séma, a kimeneti útvonal, az importok, a verziók, a monorepo beállítás és a telepítési build lépések ellenőrzésével.

Az „ERR_MODULE_NOT_FOUND” hiba javítása a Node.js ESM importálásokban

Az „ERR_MODULE_NOT_FOUND” hiba javítása a Node.js ESM importálásokban

Javítsd ki a Node.js ERR_MODULE_NOT_FOUND hibát az ESM-ben az importálási útvonalak, fájlkiterjesztések, csomagtelepítés, exportálások, ESM mód és tiszta telepítések ellenőrzésével.

Hogyan javítható az SSL-tanúsítvány hiba: Unable to Get Local Issuer Certificate Git esetén

Hogyan javítható az SSL-tanúsítvány hiba: Unable to Get Local Issuer Certificate Git esetén

Javítsd ki a Git 'unable to get local issuer certificate' hibáját a megbízható háttérprogram azonosításával, a helyes CA-lánc telepítésével, és az SSL-ellenőrzés engedélyezve tartásával.

Hogyan javítsuk meg a MongoDB hálózati időtúllépési hibát a Mongoose kapcsolódásnál

Hogyan javítsuk meg a MongoDB hálózati időtúllépési hibát a Mongoose kapcsolódásnál

Javítsa a Mongoose MongoDB hálózati időtúllépési hibáit az időtúllépés típusának azonosításával, az Atlas vagy TCP elérhetőség tesztelésével, az URI helyesbítésével, és az időtúllépések beállításával csak akkor, ha az indokolt.