Sådan rettes "Tilladelse nægtet (offentlig nøgle)" i GitHub SSH

GitHubs nuværende SSH-fejlfindingsdokumentation, kontrolleret 13. september 2026, behandler stadig Permission denied (publickey)som en godkendelsesfejl: GitHub afviste SSH-forbindelsen, fordi den ikke accepterede en brugbar offentlig nøgle til den konto og forbindelse, du præsenterede. Den hurtigste måde at løse det på er at verificere forbindelsen i en bestemt rækkefølge i stedet for straks at slette nøgler eller generere nye. GitHubs officielle fejlfindingsside for tilladelser nægtet (offentlig nøgle) anbefaler at kontrollere serveren, SSH-brugeren, den tilbudte nøgle, og om den matchende offentlige nøgle er knyttet til din konto.

En god reparation har to observerbare resultater. For det første ssh -T git@github.comidentificeres den GitHub-konto, du havde til hensigt at bruge, og rapporteres vellykket godkendelse. For det andet fungerer den faktiske repository-kommando – såsom git fetch, git pull, git pusheller git clone– med det repository, du har tilladelse til at få adgang til. Hvis du kun bestået den første test, bevises SSH-godkendelse, ikke repository-tilladelse.

Hurtig diagnostisk tjekliste

CheckSundt resultatHvis det mislykkes
Fjern-URLAnvendelsergit@github.com:OWNER/REPOSITORY.gitRet værten eller SSH-brugeren, før du ændrer nøgler
Lokale nøglefilerDer findes et understøttet offentligt/privat nøgleparGenerer kun et nyt nøglepar, hvis du ikke har et, du har til hensigt at bruge.
SSH-agentssh-add -l -E sha256angiver den tilsigtede nøgleStart agenten og tilføj den private nøgle
GitHub-kontoDen matchende offentlige nøgle vises under SSH- og GPG-nøglerTilføj den offentlige nøgle til den korrekte konto; godkend den til SSO, når det er nødvendigt
GodkendelsestestGitHub hilser det forventede brugernavn velkommenBrug detaljeret SSH-output til at se, hvilken nøgle der rent faktisk tilbydes
OpbevaringsoperationHent, pull, push eller klon lykkesKontrollér adgang til arkivet, kontoidentitet, SSO, fjern-URL eller netværksbegrænsninger

1. Bekræft destinationen, SSH-brugeren og den eksterne URL

Før du rører dine taster, skal du bekræfte, at du opretter forbindelse til GitHub.com, og at SSH-brugernavnet bogstaveligt talt er git. GitHub dokumenterer, at SSH-forbindelser til GitHub.com skal bruge gitbrugeren, ikke dit personlige GitHub-brugernavn. En kommando som ssh -T yourname@github.comforventes at mislykkes.

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

For en normal GitHub.com SSH-fjernbetjening skal URL'en se sådan ud:

git@github.com:OWNER/REPOSITORY.git

Hvis fjernbetjeningen er forkert, skal du rette den med Gits fjernbetjeningskonfiguration i stedet for at gengenerere legitimationsoplysninger:

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

Undgå også at køre almindelige Git-kommandoer med sudoeller med forhøjede rettigheder. GitHub bemærker, at dette kan få Git til at køre under et andet brugermiljø og derfor bruge andre SSH-nøgler end dem, du har konfigureret. Målet på dette tidspunkt er enkelt: et detaljeret output skal vise et forbindelsesforsøg til github.comport 22, medmindre du bevidst har konfigureret den HTTPS-portløsning, der beskrives senere.

2. Bekræft, at der findes en brugbar nøgle, og at den er indlæst.

Tjek din lokale SSH-mappe, før du opretter noget nyt. GitHubs nuværende vejledning anbefaler, at du først kigger efter et eksisterende understøttet nøglepar.

ls -al ~/.ssh
Terminalvisning, der viser en eksisterende privat nøgle id_ed25519 og en offentlig nøgle id_ed25519.pub i SSH-mappen.
Tjek SSH-mappen for et matchende privat nøgle- og offentligt nøglepar, før du genererer en ny nøgle.

Almindelige standardfilnavne for offentlige nøgler inkluderer id_ed25519.pub, id_ecdsa.pubog id_rsa.pub. GitHub understøtter ikke længere DSA-nøgler. Hvis du allerede har et nøglepar, som du har til hensigt at bruge til GitHub, skal du beholde det og fortsætte med agentkontrollen.

ssh-add -l -E sha256

Et korrekt resultat viser et eller flere fingeraftryk. Hvis den tilsigtede nøgle ikke er indlæst, skal du starte SSH-agenten, som det passer til dit miljø, og tilføje den private nøgle:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Terminalvisning starter ssh-agent og tilføjer den private nøgle id_ed25519
Indlæs den private nøgle i ssh-agent, så SSH-klienten kan tilbyde den under GitHub-godkendelse.

På Windows afhænger den præcise agent-start-kommando af, om du bruger Git Bash, Windows OpenSSH, PowerShell eller et andet miljø. GitHubs officielle vejledning til nøglegenerering og ssh-agent indeholder platformspecifikke instruktioner. Følg afsnittet for den SSH-klient, du rent faktisk bruger; at blande Git til Windows' SSH med Windows OpenSSH er en almindelig kilde til forvirring.

Hvis du ikke har et nøglepar

Generer kun en, når den tidligere kontrol viser, at du ikke har en passende nøgle, du vil bruge. GitHubs nuværende instruktioner anbefaler Ed25519 som standard softwarenøgle, når den understøttes:

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

Brug en adgangskode, hvis den passer til dine sikkerhedskrav. SSH-agenten kan cache den ulåste private nøgle til din session. Upload eller indsæt aldrig selve den private nøglefil i GitHub; filen, der ender på , .puber den offentlige nøgle, der er beregnet til kontoregistrering.

3. Vedhæft den matchende offentlige nøgle til den korrekte GitHub-konto

Det er ikke nok at have en lokal nøgle. GitHub skal have den matchende offentlige nøgle tilknyttet den konto, der skal godkendes. Vis den offentlige nøgle, og kopier derefter hele linjen:

cat ~/.ssh/id_ed25519.pub

I GitHub skal du åbne Indstillinger , derefter SSH- og GPG-nøgler , vælge Ny SSH-nøgle eller Tilføj SSH-nøgle , vælge en godkendelsesnøgle, og indsætte den offentlige nøgle. Disse etiketter matcher GitHubs nuværende officielle dokumentation for tilføjelse af en SSH-nøgle .

GitHub-indstillinger med valgte SSH- og GPG-nøgler og tilføjelse af en ny godkendelsesnøgle
Tilføj den offentlige nøgle – ikke den private nøgle – til den GitHub-konto, der skal godkende SSH-forbindelsen.

Sammenlign fingeraftryk, når du er usikker på, hvilken lokal nøgle der svarer til posten på GitHub:

ssh-add -l -E sha256

Hvis arkivet tilhører en organisation, der bruger SAML single sign-on, er det muligvis ikke nok at tilføje nøglen til din konto. GitHub dokumenterer, at en SSH-nøgle også kan kræve organisationsgodkendelse. I Indstillinger > SSH- og GPG-nøgler skal du bruge Konfigurer SSO for nøglen og godkende den relevante organisation, når denne kontrol er tilgængelig. Se GitHubs vejledning til godkendelse af SSH-nøgler med SSO .

4. Test godkendelse uafhængigt af Git

Brug ikke git pushsom din eneste test. Test SSH direkte:

ssh -T git@github.com
Terminal, der viser GitHub SSH-testkommandoen og en vellykket godkendelseshilsen
En vellykket SSH-test identificerer den godkendte GitHub-konto og bekræfter, at nøgleudvekslingen fungerer.

Succesmeddelelsen bør hilse dit GitHub-brugernavn velkommen og forklare, at GitHub ikke giver shell-adgang. GitHub bemærker også, at denne test kan afsluttes med statuskode 1, selv når godkendelsen lykkes, så bedøm den ud fra godkendelsesmeddelelsen i stedet for at forvente en normal interaktiv shell.

Hvis testen stadig ender på Permission denied (publickey), skal du køre verbose-tilstanden:

ssh -vT git@github.com

Se efter linjer som f.eks Offering public key. Hvis loggen aldrig tilbyder den forventede nøgle, er problemet valg af lokal nøgle eller agentkonfiguration. Hvis den tilsigtede nøgle tilbydes, men afvises, skal du kontrollere, om den offentlige nøgle er knyttet til den korrekte GitHub-konto, og om SSO-godkendelse er påkrævet.

Flere GitHub-konti: Bekræft hvilken identitet der rent faktisk bruges

Hvis du bruger arbejds- og personlige konti på den samme computer, kan vellykket SSH-godkendelse stadig lande på den forkerte konto. GitHub-dokumenter bruger IdentitiesOnly=yeseller en specifik identitetsfil til at kontrollere, hvilken nøgle SSH tilbyder. For en engangsdiagnosticering:

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

Hvis GitHub modtager det forkerte brugernavn, har du fundet uoverensstemmelsen. Konfigurer separate nøgler eller værtsaliasser i stedet for gentagne gange at slette og tilføje nøgler igen. GitHubs officielle guide til flere konti dækker dette tilfælde mere detaljeret.

5. Gentag kommandoen fra repository, og skift derefter kun fremgangsmåde, hvis beviserne peger andetsteds.

Når ssh -T git@github.comdu har godkendt som den forventede bruger, skal du prøve den faktiske repository-handling igen:

git fetch origin
git pull
git push
Terminalvisning, der viser en GitHub SSH-klon, der fuldføres korrekt efter godkendelse er rettet
Den sidste kvalitetskontrol er den rigtige Git-operation: vellykket godkendelse bør resultere i vellykket adgang til arkivet, når kontoen har tilladelse.

Hvis SSH-godkendelse lykkes, men Git nu rapporterer en repository-specifik tilladelsesfejl, skal du stoppe med at ændre SSH-nøglen. På det tidspunkt har nøglen allerede gjort sit job. Bekræft, at den godkendte konto har adgang til repository'et, at ejeren og repository-navnet i den eksterne URL er korrekte, og at en organisation har tildelt den nødvendige rolle. GitHubs separate side om fejlfinding af repository-tilladelser forklarer tilfældet, hvor nøglen tilhører en konto uden adgang.

Hvis port 22 er blokeret

En firewall eller proxy kan forhindre en gyldig SSH-opsætning i at nå GitHub på port 22. Test GitHubs dokumenterede SSH-over-HTTPS-slutpunkt:

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

Værtsnavnet er ssh.github.com, ikke github.com, for denne direkte port-443-test. Hvis det virker, dokumenterer GitHub denne SSH-konfiguration:

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

Test derefter igen med ssh -T git@github.com. Se GitHubs SSH over port 443-vejledning . Denne løsning gælder ikke for alle GitHub Enterprise-miljøer, og proxyservere kan stadig forstyrre.

Hvordan man ved, hvornår man skal stoppe med at prøve den samme løsning

Hvad du observererHvad det betyderNæste træk
ssh-add -lviser ingen tilsigtet nøgleKlienten kan ikke tilbyde den korrekte private nøgleRet agent- eller nøglestien
Udførlig SSH vises aldrig Offering public keyfor din tilsigtede nøgleSSH-valget er forkertBrug -i, IdentitiesOnly=yeseller korriger~/.ssh/config
Den tilsigtede nøgle tilbydes, men afvisesGitHub accepterer ikke den nøgle for den forsøgte identitetTjek den uploadede offentlige nøgle, målkontoen og SSO-godkendelsen
SSH hilser det forkerte GitHub-brugernavn velkommenEn anden kontos nøgle brugesAdskil kontonøgler og vælg eksplicit den tilsigtede identitet
SSH lykkes, men arkivet afviser push eller hentGodkendelse virker; lagergodkendelse eller URL er nu problemetKontroller adgang til arkivet og fjernejerskab
Port 22 kan slet ikke oprette forbindelseNetværket blokerer muligvis standard SSHTest port 443 eller brug HTTPS

Almindelige løsninger, der ofte spilder tid

Genererer nøgle efter nøgle uden at tjekke, hvad SSH tilbyder. Flere nøgler kan gøre udvælgelsen sværere. Brug ssh -vTog ssh-add -l -E sha256først.

Brug dit GitHub-brugernavn før @github.com. GitHubs SSH-slutpunkt forventer, at SSH-brugeren git. Din GitHub-identitet bestemmes af den offentlige nøgle, som GitHub genkender.

Uploader den private nøgle. Gør ikke dette. GitHub skal bruge den offentlige .pubværdi; den private nøgle forbliver på din maskine eller i et godkendt nøglelager.

Forudsat at en vellykket SSH-test garanterer push-adgang. Det beviser kontogodkendelse. Godkendelse af arkivet er en separat kontrol.

Ignorerer SSO. Organisationsressourcer kan kræve en yderligere SSH-nøglegodkendelse, selvom nøglen findes på din personlige konto.

Brug af forhøjede Git-kommandoer. Hvis du kører Git som en anden OS-bruger, kan du ændre, hvilken hjemmemappe, SSH-konfiguration, agent og nøgler der bruges.

Når HTTPS er det bedre svar

SSH er ikke obligatorisk. GitHub understøtter også HTTPS-fjernbetjeninger. Hvis et låst virksomhedsnetværk, en politik for administreret slutpunkt eller en proxy gør SSH upraktisk, kan det være enklere at skifte det eksterne lager til HTTPS end at bekæmpe netværket. Det er en ændring af godkendelsesmetoden, ikke en reparation af SSH-konfigurationen, så brug den, når dit miljø gør SSH uønsket, snarere end som en uløst måde at skjule en uløst nøglematch.

For SSH er det mest pålidelige stoppunkt evidensbaseret: den forventede nøgle indlæses, GitHub genkender den som den forventede konto, organisationen autoriserer den, når det er nødvendigt, og den faktiske Git-operation lykkes. Hvis en af ​​disse kontroller mislykkes, skal du kun ændre det lag, der mislykkedes. Det holder fejlfindingsprocessen under kontrol og undgår unødvendig udskiftning af fungerende nøgler.

Officielle referencer

Efterlad en kommentar

Sådan rettes "ENOSPC: Systemgrænse for filovervågning nået" i Linux

Sådan rettes "ENOSPC: Systemgrænse for filovervågning nået" i Linux

Ret fejl i Linux ENOSPC-filovervågning ved at kontrollere inotify-grænser, finde processer med mange overvågningsbehov, hæve grænser sikkert og gøre ændringer permanente.

Sådan rettes "Tailwind CSS-stilarter opdateres ikke" i en Vite React-app

Sådan rettes "Tailwind CSS-stilarter opdateres ikke" i en Vite React-app

Ret problemer med Tailwind CSS-stilarter, der ikke opdateres i Vite React, ved at kontrollere Tailwind v4-opsætning, CSS-import, kildekodedetektion, dynamiske klasser, HMR og forældede cacher.

Sådan rettes ModuleNotFoundError: Intet modul med navnet 'pip' i Python 3

Sådan rettes ModuleNotFoundError: Intet modul med navnet 'pip' i Python 3

Ret Python 3's ModuleNotFoundError for pip på Windows, macOS og Linux med ensurepip, OS-pakker, virtuelle miljøer og fortolkertjek.

Sådan rettes "Tilladelse nægtet (offentlig nøgle)" i GitHub SSH

Sådan rettes "Tilladelse nægtet (offentlig nøgle)" i GitHub SSH

Ret GitHub SSH-tilladelse nægtet (publickey) ved at kontrollere værten, den aktive SSH-nøgle, GitHub-kontoen, SSO-godkendelsen, den eksterne URL og port 22-adgang.

How to Fix “Git Push Rejected: Non-Fast-Forward” Without Losing Changes

How to Fix “Git Push Rejected: Non-Fast-Forward” Without Losing Changes

Fix a Git non-fast-forward push safely. Protect local work, fetch remote commits, choose merge or rebase, resolve conflicts, and push without losing changes.

Sådan rettes "Nginx 502 Bad Gateway" ved proxy til Node.js

Sådan rettes "Nginx 502 Bad Gateway" ved proxy til Node.js

Ret Nginx 502 Bad Gateway-fejl med en Node.js upstream ved at kontrollere app-porten, NGINX-logfiler, proxy_pass-adresse, containernetværk, timeouts og genindlæsning.

Sådan rettes "Type 'null' kan ikke tildeles til type" i TypeScript

Sådan rettes "Type 'null' kan ikke tildeles til type" i TypeScript

Retter TypeScripts fejl "Type 'null' kan ikke tildeles til type" med foreningstyper, indsnævring, standardværdier og sikre påstande under strictNullChecks.

Sådan retter du fejlen "Prisma Client Has Not Been Generated Yet"

Sådan retter du fejlen "Prisma Client Has Not Been Generated Yet"

Ret fejlen med Prisma Client, der ikke er genereret, ved at kontrollere din generator, schema, output-sti, imports, versioner, monorepo-opsætning og build-trin til deployment.

Sådan rettes "ERR_MODULE_NOT_FOUND" i Node.js ESM-importer

Sådan rettes "ERR_MODULE_NOT_FOUND" i Node.js ESM-importer

Ret Node.js ERR_MODULE_NOT_FOUND i ESM ved at kontrollere importstier, filtypenavne, pakkeinstallation, eksport, ESM-tilstand og rene installationer.

Sådan løser du SSL-certifikatproblemet: Unable to get local issuer certificate i Git

Sådan løser du SSL-certifikatproblemet: Unable to get local issuer certificate i Git

Løs Git-fejlen 'unable to get local issuer certificate' ved at identificere tillidsbackenden, installere den korrekte CA-kæde og holde SSL-verifikation aktiveret.