Kā GitHub SSH novērst kļūdu "Atļauja liegta (publiskā atslēga)"

GitHub pašreizējā SSH problēmu novēršanas dokumentācija, kas pārbaudīta 2026. gada 13. septembrī, joprojām tiek uzskatīta Permission denied (publickey)par autentifikācijas kļūmi: GitHub noraidīja SSH savienojumu, jo tas nepieņēma izmantojamu publisko atslēgu jūsu norādītajam kontam un savienojumam. Ātrākais veids, kā to labot, ir pārbaudīt savienojumu noteiktā secībā, nevis nekavējoties dzēst atslēgas vai ģenerēt jaunas. GitHub oficiālajā atļaujas liegšanas (publiskās atslēgas) problēmu novēršanas lapā ieteicams pārbaudīt serveri, SSH lietotāju, piedāvāto atslēgu un to, vai atbilstošā publiskā atslēga ir pievienota jūsu kontam.

Labam remontam ir divi novērojami rezultāti. Pirmkārt, ssh -T git@github.comtas identificē GitHub kontu, kuru plānojāt izmantot, un ziņo par veiksmīgu autentifikāciju. Otrkārt, faktiskā repozitorija komanda — piemēram git fetch, git pull, git push, vai git clone— darbojas ar repozitoriju, kuram jums ir atļauja piekļūt. Tikai pirmā testa nokārtošana apliecina SSH autentifikāciju, nevis repozitorija atļauju.

Ātrās diagnostikas kontrolsaraksts

PārbaudietVeselīgs rezultātsJa tas neizdodas
Attālais URLLietošanagit@github.com:OWNER/REPOSITORY.gitPirms atslēgu maiņas izlabojiet resursdatora vai SSH lietotāja datus
Lokālie atslēgu failiPastāv atbalstīts publisko/privāto atslēgu pārisĢenerējiet jaunu atslēgu pāri tikai tad, ja jums nav tāda, ko plānojat izmantot.
SSH aģentsssh-add -l -E sha256norāda paredzēto atslēguPalaidiet aģentu un pievienojiet privāto atslēgu
GitHub kontsAtbilstošā publiskā atslēga parādās zem SSH un GPG atslēgām.Pievienojiet publisko atslēgu pareizajam kontam; autorizējiet to vienreizējai ieslēgšanai (SSO), ja nepieciešams.
Autentifikācijas pārbaudeGitHub sagaida gaidīto lietotājvārduIzmantojiet detalizētu SSH izvadi, lai redzētu, kura atslēga faktiski tiek piedāvāta.
Repozitorija darbībaIegūt, vilkt, sūtīt vai klonēt izdodasPārbaudiet piekļuvi krātuvei, konta identitāti, SSO, attālo URL vai tīkla ierobežojumus.

1. Pārbaudiet galamērķi, SSH lietotāju un attālo URL

Pirms taustiņu aizskaršanas pārliecinieties, vai veidojat savienojumu ar GitHub.com un vai SSH lietotājvārds ir burtiski git. GitHub dokumentē, ka SSH savienojumiem ar GitHub.com ir jāizmanto lietotājs git, nevis jūsu personīgais GitHub lietotājvārds. Tāda komanda kā , ssh -T yourname@github.comdomājams, neizdosies.

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

Parasta GitHub.com SSH tālvadības pults URL adresei vajadzētu izskatīties šādi:

git@github.com:OWNER/REPOSITORY.git

Ja tālvadības pults ir nepareiza, izlabojiet to ar Git tālvadības pults konfigurāciju, nevis atkārtoti ģenerējiet akreditācijas datus:

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

Tāpat izvairieties palaist parastas Git komandas ar sudovai paaugstinātām privilēģijām. GitHub norāda, ka, to darot, Git var darboties citā lietotāja vidē un līdz ar to izmantot citas SSH atslēgas, nevis tās, kuras konfigurējāt. Šajā posmā mērķis ir vienkāršs: detalizētai izvadei vajadzētu parādīt savienojuma mēģinājumu github.com22. portā, ja vien jūs apzināti nekonfigurējāt HTTPS porta risinājumu, kas aprakstīts tālāk.

2. Pārliecinieties, vai pastāv un ir ielādēta izmantojama atslēga.

Pirms jebkādu jaunu failu izveides pārbaudiet savu lokālo SSH direktoriju. GitHub pašreizējās vadlīnijas iesaka vispirms meklēt esošu atbalstītu atslēgu pāri.

ls -al ~/.ssh
Termināļa skats, kurā norādīta esoša id_ed25519 privātā atslēga un id_ed25519.pub publiskā atslēga SSH direktorijā
Pirms citas atslēgas ģenerēšanas pārbaudiet SSH direktoriju, vai tajā nav atbilstoša privātās atslēgas un publiskās atslēgas pāra.

Bieži sastopamie noklusējuma publiskās atslēgas failu nosaukumi ir id_ed25519.pub, id_ecdsa.pubun id_rsa.pub. GitHub vairs neatbalsta DSA atslēgas. Ja jums jau ir atslēgu pāris, ko plānojat izmantot GitHub, saglabājiet to un turpiniet aģenta pārbaudi.

ssh-add -l -E sha256

Veselīgs rezultāts uzrāda vienu vai vairākus pirkstu nospiedumus. Ja paredzētā atslēga netiek ielādēta, startējiet SSH aģentu atbilstoši jūsu videi un pievienojiet privāto atslēgu:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Termināļa skats, kurā tiek palaists ssh-agent un pievienota privātā atslēga id_ed25519
Ielādējiet privāto atslēgu ssh-agent, lai SSH klients to varētu piedāvāt GitHub autentifikācijas laikā.

Operētājsistēmā Windows precīza agent-start komanda ir atkarīga no tā, vai izmantojat Git Bash, Windows OpenSSH, PowerShell vai citu vidi. GitHub oficiālajā atslēgu ģenerēšanas un ssh-agent rokasgrāmatā ir sniegti platformai specifiski norādījumi. Izpildiet sadaļu par SSH klientu, kuru faktiski izmantojat; Git for Windows SSH jaukšana ar Windows OpenSSH ir bieži sastopams apjukuma avots.

Ja jums nav atslēgu pāra

Ģenerējiet to tikai tad, ja iepriekšējā pārbaude parāda, ka jums nav piemērotas atslēgas, ko vēlaties izmantot. GitHub pašreizējās instrukcijas iesaka Ed25519 kā standarta programmatūras atslēgu, ja tāda tiek atbalstīta:

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

Izmantojiet paroli, ja tā atbilst jūsu drošības prasībām. SSH aģents var kešatmiņā saglabāt atbloķēto privāto atslēgu jūsu sesijai. Nekad neaugšupielādējiet un neielīmējiet pašu privātās atslēgas failu GitHub; fails, kas beidzas ar , .pubir publiskā atslēga, kas paredzēta konta reģistrācijai.

3. Pievienojiet atbilstošo publisko atslēgu pareizajam GitHub kontam.

Ar lokālo atslēgu vien nepietiek. GitHub ir jābūt atbilstošajai publiskajai atslēgai, kas saistīta ar kontu, kuram jāveic autentifikācija. Parādiet publisko atslēgu un pēc tam nokopējiet visu rindu:

cat ~/.ssh/id_ed25519.pub

GitHub platformā atveriet Iestatījumi , pēc tam SSH un GPG atslēgas , izvēlieties Jauna SSH atslēga vai Pievienot SSH atslēgu , atlasiet autentifikācijas atslēgu un ielīmējiet publisko atslēgu. Šīs etiķetes atbilst GitHub pašreizējai oficiālajai SSH atslēgas pievienošanas dokumentācijai .

GitHub iestatījumu skats ar atlasītām SSH un GPG atslēgām un jaunas autentifikācijas atslēgas pievienošanu
Pievienojiet publisko atslēgu, nevis privāto atslēgu, GitHub kontam, kuram jāautentificē SSH savienojums.

Salīdziniet pirkstu nospiedumus, ja neesat pārliecināts, kura lokālā atslēga atbilst ierakstam vietnē GitHub:

ssh-add -l -E sha256

Ja repozitorijs pieder organizācijai, kas izmanto SAML vienreizējo pierakstīšanos, atslēgas pievienošana jūsu kontam var nebūt pietiekama. GitHub dokumentē, ka SSH atslēgai var būt nepieciešama arī organizācijas autorizācija. Sadaļā Iestatījumi > SSH un GPG atslēgas izmantojiet atslēgas konfigurēšanas opciju “Konfigurēt SSO” un autorizējiet attiecīgo organizāciju, ja šī kontrole ir pieejama. Skatiet GitHub SSH atslēgas SSO autorizācijas rokasgrāmatu .

4. Pārbaudiet autentifikāciju neatkarīgi no Git

Neizmantojiet git pushkā vienīgo testu. Pārbaudiet SSH tieši:

ssh -T git@github.com
Terminālis, kurā redzama GitHub SSH testa komanda un veiksmīgas autentifikācijas sveiciens
Veiksmīgs SSH tests identificē autentificēto GitHub kontu un apstiprina, ka atslēgu apmaiņa darbojas.

Veiksmes ziņojumam vajadzētu sveicināt jūsu GitHub lietotājvārdu un paskaidrot, ka GitHub nenodrošina piekļuvi čaulai. GitHub arī norāda, ka šis tests var beigties ar statusa kodu 1 pat tad, ja autentifikācija ir veiksmīga, tāpēc spriediet par to pēc autentifikācijas ziņojuma, nevis sagaidot parastu interaktīvu čaulu.

Ja tests joprojām beidzas ar Permission denied (publickey), palaidiet detalizēto režīmu:

ssh -vT git@github.com

Meklējiet tādas rindas kā Offering public key. Ja žurnālā nekad netiek piedāvāta gaidītā atslēga, problēma ir lokālajā atslēgas atlasē vai aģenta konfigurācijā. Ja paredzētā atslēga tiek piedāvāta, bet noraidīta, pārbaudiet, vai šī publiskā atslēga ir pievienota pareizajam GitHub kontam un vai ir nepieciešama SSO autorizācija.

Vairāki GitHub konti: pārbaudiet, kura identitāte faktiski tiek izmantota

Ja vienā datorā izmantojat darba un personīgos kontus, veiksmīga SSH autentifikācija joprojām var nonākt nepareizajā kontā. GitHub dokumentē, izmantojot IdentitiesOnly=yesvai konkrētu identitātes failu, lai kontrolētu, kuru atslēgu SSH piedāvā. Vienreizējai diagnostikai:

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

Ja GitHub sagaida nepareizo lietotājvārdu, esat atradis neatbilstību. Konfigurējiet atsevišķas atslēgas vai resursdatora aizstājvārdus, nevis atkārtoti dzēsiet un pievienojiet atslēgas. GitHub oficiālajā vairāku kontu rokasgrāmatā šis gadījums ir aplūkots sīkāk.

5. Atkārtojiet repozitorija komandu un mainiet pieeju tikai tad, ja pierādījumi norāda uz citu vietu.

Kad ssh -T git@github.comesat autentificējies kā paredzētais lietotājs, mēģiniet vēlreiz veikt faktisko repozitorija darbību:

git fetch origin
git pull
git push
Termināļa skats, kurā redzams, kā GitHub SSH klons veiksmīgi tiek pabeigts pēc autentifikācijas, ir labots
Pēdējā kvalitātes pārbaude ir reālā Git darbība: veiksmīgai autentifikācijai vajadzētu novest pie veiksmīgas piekļuves repozitorijam, ja kontam ir atļauja.

Ja SSH autentifikācija ir veiksmīga, bet Git tagad ziņo par repozitorijam specifisku atļauju kļūdu, pārtrauciet SSH atslēgas maiņu. Šajā brīdī atslēga jau ir paveikusi savu darbu. Pārliecinieties, vai autentificētajam kontam ir piekļuve repozitorijam, vai attālā URL adreses īpašnieks un repozitorija nosaukums ir pareizi un vai organizācija ir piešķīrusi nepieciešamo lomu. GitHub atsevišķā repozitorija atļauju problēmu novēršanas lapā ir paskaidrots gadījums, kad atslēga pieder kontam bez piekļuves.

Ja 22. ports ir bloķēts

Ugunsmūris vai starpniekserveris var neļaut derīgai SSH iestatīšanai sasniegt GitHub 22. portā. Pārbaudiet GitHub dokumentēto SSH-over-HTTPS galapunktu:

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

Šajā tiešajā 443. porta testā resursdatora nosaukums ir ssh.github.com, nevis . Ja tas darbojas, GitHub dokumentē šo SSH konfigurāciju:github.com

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

Pēc tam pārbaudiet vēlreiz ar ssh -T git@github.com. Skatiet GitHub rokasgrāmatu par SSH savienojumu, izmantojot 443. portu . Šis risinājums neattiecas uz visām GitHub Enterprise vidēm, un starpniekserveri joprojām var traucēt.

Kā zināt, kad pārtraukt mēģināt to pašu risinājumu

Ko jūs novērojatKo tas nozīmēNākamais gājiens
ssh-add -lnerāda paredzēto atslēguKlients nevar piedāvāt pareizo privāto atslēgu.Labot aģenta vai atslēgas ceļu
Detalizēts SSH nekad netiek parādīts Offering public keyjūsu paredzētajai atslēgaiSSH izvēle ir nepareizaIzmantojiet -i, IdentitiesOnly=yesvai labojiet~/.ssh/config
Paredzētā atslēga tiek piedāvāta, bet tiek noraidīta.GitHub nepieņem šo atslēgu mēģinātajai identitātei.Pārbaudiet augšupielādēto publisko atslēgu, mērķa kontu un SSO autorizāciju
SSH sagaida nepareizu GitHub lietotājvārduTiek izmantota cita konta atslēga.Atdaliet konta atslēgas un skaidri atlasiet paredzēto identitāti
SSH veiksmīgi darbojas, bet repozitorijs noraida push vai fetch pieprasījumuAutentifikācija darbojas; tagad problēma ir repozitorija autorizācija vai URLPārbaudiet piekļuvi krātuvei un attālās īpašumtiesības
22. ports vispār nevar izveidot savienojumuTīkls, iespējams, bloķē standarta SSH.Pārbaudiet 443. portu vai izmantojiet HTTPS

Bieži sastopami labojumi, kas bieži vien tērē laiku

Atslēgu ģenerēšana pēc atslēgas, nepārbaudot, ko piedāvā SSH. Vairāk atslēgu var apgrūtināt atlasi. Vispirms izmantojiet ssh -vTun ssh-add -l -E sha256.

Izmantojot savu GitHub lietotājvārdu pirms @github.com. GitHub SSH galapunkts sagaida, ka SSH lietotājs git. Jūsu GitHub identitāti nosaka publiskā atslēga, ko GitHub atpazīst.

Privātās atslēgas augšupielāde. Nedariet to. GitHub ir nepieciešama publiskā .pubvērtība; privātā atslēga paliek jūsu datorā vai apstiprinātā atslēgu krātuvē.

Pieņemot, ka SSH tests ir veiksmīgs, tiek garantēta piekļuve push režīmā. Tas pierāda konta autentifikāciju. Repozitorija autorizācija ir atsevišķa pārbaude.

SSO ignorēšana. Organizācijas resursiem var būt nepieciešama papildu SSH atslēgas autorizācija pat tad, ja atslēga atrodas jūsu personīgajā kontā.

Izmantojot paaugstinātas Git komandas. Palaižot Git kā cits OS lietotājs, var mainīt, kurš mājas direktorijs, SSH konfigurācija, aģents un atslēgas tiek izmantotas.

Kad HTTPS ir labākā atbilde

SSH nav obligāts. GitHub atbalsta arī HTTPS attālinātās piekļuves. Ja slēgta korporatīvā tīkla, pārvaldītas galapunktu politikas vai starpniekservera dēļ SSH nav praktiski lietojams, repozitorija attālinātās piekļuves pārslēgšana uz HTTPS var būt vienkāršāka nekā cīņa ar tīklu. Tā ir autentifikācijas metodes maiņa, nevis SSH konfigurācijas labojums, tāpēc izmantojiet to, ja jūsu vide padara SSH nevēlamu, nevis kā veidu, kā slēpt neatrisinātu atslēgas neatbilstību.

SSH gadījumā visuzticamākais pieturas punkts ir uz pierādījumiem balstīts: paredzētā atslēga tiek ielādēta, GitHub to atpazīst kā paredzēto kontu, organizācija to autorizē, kad tas nepieciešams, un reālā Git darbība ir veiksmīga. Ja kāda no šīm pārbaudēm neizdodas, mainiet tikai to slāni, kas neizdevās. Tas ļauj kontrolēt problēmu novēršanas procesu un novērš nevajadzīgu darba atslēgu nomaiņu.

Oficiālās atsauces

Atstājiet komentāru

Kā novērst kļūdu "ENOSPC: sasniegts failu vērotāju sistēmas ierobežojums" operētājsistēmā Linux

Kā novērst kļūdu "ENOSPC: sasniegts failu vērotāju sistēmas ierobežojums" operētājsistēmā Linux

Novērsiet Linux ENOSPC failu vērotāja kļūdas, pārbaudot inotify ierobežojumus, atrodot procesus, kuros ir daudz vērotāja resursu, droši paaugstinot ierobežojumus un padarot izmaiņas pastāvīgas.

Kā novērst kļūdu “Tailwind CSS stili netiek atjaunināti” Vite React lietotnē

Kā novērst kļūdu “Tailwind CSS stili netiek atjaunināti” Vite React lietotnē

Novērsiet Tailwind CSS stilu neatjaunināšanu pakalpojumā Vite React, pārbaudot Tailwind v4 iestatījumus, CSS importēšanu, avota noteikšanu, dinamiskās klases, HMR un novecojušas kešatmiņas.

Kā novērst ModuleNotFoundError kļūdu: Python 3 nav moduļa ar nosaukumu “pip”

Kā novērst ModuleNotFoundError kļūdu: Python 3 nav moduļa ar nosaukumu “pip”

Novērsiet Python 3 ModuleNotFoundError kļūdu pip funkcijai operētājsistēmās Windows, macOS un Linux, izmantojot ensurepip, OS pakotnes, virtuālās vides un interpretētāja pārbaudes.

Kā GitHub SSH novērst kļūdu "Atļauja liegta (publiskā atslēga)"

Kā GitHub SSH novērst kļūdu "Atļauja liegta (publiskā atslēga)"

Novērsiet GitHub SSH atļaujas liegšanu (publiskā atslēga), pārbaudot resursdatoru, aktīvo SSH atslēgu, GitHub kontu, SSO autorizāciju, attālo URL un 22. porta piekļuvi.

Kā novērst kļūdu “Git Push noraidīts: nepārtīšana uz priekšu”, nezaudējot izmaiņas

Kā novērst kļūdu “Git Push noraidīts: nepārtīšana uz priekšu”, nezaudējot izmaiņas

Droši izlabojiet Git ne-ātrās pārtīšanas kļūdu. Aizsargājiet lokālo darbu, ielādējiet attālinātus izmaiņu izmaiņu ierakstus, izvēlieties apvienošanu vai atkārtotu bāzi, atrisiniet konfliktus un veiciet izmaiņu pārtīšanu, nezaudējot izmaiņas.

Kā novērst kļūdu "Nginx 502 Bad Gateway", veicot starpniekservera darbību ar Node.js

Kā novērst kļūdu "Nginx 502 Bad Gateway", veicot starpniekservera darbību ar Node.js

Izlabojiet Nginx 502 Bad Gateway kļūdas ar Node.js augšupējo resursu, pārbaudot lietotnes portu, NGINX žurnālus, proxy_pass adresi, konteineru tīklošanu, taimautus un atkārtotu ielādi.

Kā TypeScript labot kļūdu “Type 'null' nav piešķirams tipam”

Kā TypeScript labot kļūdu “Type 'null' nav piešķirams tipam”

Novērsta TypeScript kļūda “Tips 'null' nav piešķirams tipam”, izmantojot apvienošanas tipus, sašaurināšanu, noklusējuma vērtības un drošas apgalvojumus, izmantojot strictNullChecks.

Kā novērst kļūdu “Prisma Client has not been generated yet”

Kā novērst kļūdu “Prisma Client has not been generated yet”

Novērsiet Prisma Client ģenerēšanas kļūdu, pārbaudot savu ģeneratoru, shēmu, izvades ceļu, importus, versijas, monorepo iestatījumu un izvietošanas būvēšanas soļus.

Kā novērst kļūdu "ERR_MODULE_NOT_FOUND" Node.js ESM importā

Kā novērst kļūdu "ERR_MODULE_NOT_FOUND" Node.js ESM importā

Izlabojiet Node.js ERR_MODULE_NOT_FOUND kļūdu ESM, pārbaudot importēšanas ceļus, failu paplašinājumus, pakotņu instalēšanu, eksportēšanu, ESM režīmu un tīrās instalācijas.

Kā novērst SSL sertifikāta problēmu: Nevar iegūt vietējo izdevēja sertifikātu Git

Kā novērst SSL sertifikāta problēmu: Nevar iegūt vietējo izdevēja sertifikātu Git

Novērsiet Git kļūdu “nevar iegūt vietējo izdevēja sertifikātu”, identificējot uzticības aizmugurprogrammu, instalējot pareizo CA ķēdi un saglabājot SSL verifikāciju iespējotu.