Kuinka korjata "Käyttöoikeus evätty (julkinen avain)" GitHub SSH:ssa
GitHubin nykyinen SSH-vianmääritysdokumentaatio, joka on tarkistettu 13. syyskuuta 2026, käsittelee edelleen Permission denied (publickey)todennusvirheenä seuraavaa: GitHub hylkäsi SSH-yhteyden, koska se ei hyväksynyt käyttökelpoista julkista avainta esittämällesi tilille ja yhteydelle. Nopein tapa korjata tämä on varmistaa yhteys tietyssä järjestyksessä sen sijaan, että avaimet poistetaan välittömästi tai luodaan uusia. GitHubin virallinen julkinen avain (Permission denied) -vianmäärityssivu suosittelee palvelimen, SSH-käyttäjän, tarjotun avaimen ja sen tarkistamista, onko tiliisi liitetty vastaava julkinen avain.
Hyvällä korjauksella on kaksi havaittavaa tulosta. Ensinnäkin ssh -T git@github.comse tunnistaa GitHub-tilin, jota aiot käyttää, ja raportoi onnistuneesta todennuksesta. Toiseksi varsinainen repositorion komento – kuten git fetch, git pull, git pushtai git clone– toimii sen repositorion kanssa, johon sinulla on valtuudet käyttää. Vain ensimmäisen testin läpäiseminen todistaa SSH-todennuksen, ei repositorion käyttöoikeuksia.
Korjaa isäntä- tai SSH-käyttäjätiedot ennen avainten vaihtamista
Paikalliset avaintiedostot
Tuettu julkinen/yksityinen avainpari on olemassa
Luo uusi avainpari vain, jos sinulla ei ole sellaista, jota aiot käyttää.
SSH-agentti
ssh-add -l -E sha256luettelee tarkoitetun avaimen
Käynnistä agentti ja lisää yksityinen avain
GitHub-tili
Vastaava julkinen avain näkyy SSH- ja GPG-avainten alla.
Lisää julkinen avain oikealle tilille; valtuuta se kertakirjautumiseen tarvittaessa.
Todennustesti
GitHub tervehtii odotettua käyttäjätunnusta
Käytä yksityiskohtaista SSH-tulostetta nähdäksesi, mitä avainta todellisuudessa tarjotaan
Arkiston toiminta
Nouto, vetäminen, työntäminen tai kloonaaminen onnistuu
Tarkista tietovaraston käyttöoikeudet, tilin identiteetti, kertakirjautuminen, etäosoite tai verkkorajoitukset
1. Tarkista kohde, SSH-käyttäjä ja etäosoite
Ennen kuin kosket näppäimiin, varmista, että olet yhteydessä GitHub.com-sivustoon ja että SSH-käyttäjätunnus on kirjaimellisesti git. GitHub dokumentoi, että SSH-yhteyksien GitHub.com-sivustoon on käytettävä käyttäjää git, ei henkilökohtaista GitHub-käyttäjätunnustasi. Komennon, kuten , ssh -T yourname@github.comodotetaan epäonnistuvan.
git remote -v
ssh -vT git@github.com
Tavallisen GitHub.com SSH -etäpalvelimen URL-osoitteen pitäisi näyttää tältä:
git@github.com:OWNER/REPOSITORY.git
Jos etäkäyttö on väärä, korjaa se Gitin etäkäyttöasetuksilla tunnistetietojen uudelleenluomisen sijaan:
Vältä myös tavallisten Git-komentojen suorittamista rajoitetuilla sudotai korotetuilla oikeuksilla. GitHub huomauttaa, että tämä voi saada Gitin toimimaan eri käyttäjäympäristössä ja siten käyttämään eri SSH-avaimia kuin määrittämäsi. Tässä vaiheessa tavoite on yksinkertainen: yksityiskohtaisen tulosteen pitäisi näyttää yhteysyritys github.comporttiin 22, ellet ole tarkoituksella määrittänyt myöhemmin kuvattua HTTPS-portin kiertotietä.
2. Varmista, että käyttökelpoinen avain on olemassa ja ladattu
Tarkista paikallinen SSH-hakemistosi ennen uuden luomista. GitHubin nykyiset ohjeet suosittelevat ensin olemassa olevan tuetun avainparin etsimistä.
ls -al ~/.ssh
Tarkista SSH-hakemistosta vastaava yksityinen avain ja julkinen avainpari ennen uuden avaimen luomista.
Yleisiä julkisen avaimen tiedostonimien oletusarvoja ovat id_ed25519.pub, id_ecdsa.pubja id_rsa.pub. GitHub ei enää tue DSA-avaimia. Jos sinulla on jo avainpari, jota aiot käyttää GitHubissa, säilytä se ja jatka agentin tarkistusta.
ssh-add -l -E sha256
Terveessä tuloksessa luetellaan yksi tai useampi sormenjälki. Jos aiottua avainta ei ladata, käynnistä SSH-agentti ympäristösi mukaisesti ja lisää yksityinen avain:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Lataa yksityinen avain ssh-agenttiin, jotta SSH-asiakasohjelma voi tarjota sitä GitHub-todennuksen aikana.
Windowsissa tarkka agent-start-komento riippuu siitä, käytätkö Git Bashia, Windows OpenSSH:ta, PowerShelliä vai jotain muuta ympäristöä. GitHubin virallinen avainten luonti- ja ssh-agent-opas tarjoaa alustakohtaisia ohjeita. Noudata käyttämäsi SSH-asiakasohjelman ohjeita; Git for Windowsin SSH:n ja Windows OpenSSH:n yhdistäminen on yleinen sekaannuksen lähde.
Jos sinulla ei ole avainparia
Luo sellainen vain, jos aiempi tarkistus osoittaa, ettei sinulla ole sopivaa avainta, jota haluat käyttää. GitHubin nykyiset ohjeet suosittelevat Ed25519:ää standardiksi ohjelmistoavaimeksi, jos sitä tuetaan:
ssh-keygen -t ed25519 -C "your_email@example.com"
Käytä salasanaa, jos se sopii turvallisuusvaatimuksiisi. SSH-agentti voi tallentaa lukitsemattoman yksityisen avaimen välimuistiin istuntoasi varten. Älä koskaan lataa tai liitä itse yksityisen avaimen tiedostoa GitHubiin; tiedosto, joka päättyy , .pubon tilin rekisteröintiin tarkoitettu julkinen avain.
3. Liitä vastaava julkinen avain oikeaan GitHub-tiliin
Pelkkä paikallinen avain ei riitä. GitHubilla on oltava vastaava julkinen avain, joka liittyy todennuksen kohteena olevaan tiliin. Näytä julkinen avain ja kopioi sitten koko rivi:
cat ~/.ssh/id_ed25519.pub
Avaa GitHubissa Asetukset , sitten SSH- ja GPG-avaimet , valitse Uusi SSH-avain tai Lisää SSH-avain , valitse todennusavain ja liitä julkinen avain. Nämä tunnisteet vastaavat GitHubin nykyistä virallista SSH-avaimen lisäämisdokumentaatiota .
Lisää julkinen avain – ei yksityistä avainta – GitHub-tilille, jonka pitäisi todentaa SSH-yhteys.
Vertaile sormenjälkiä, kun et ole varma, mikä paikallinen avain vastaa GitHubin merkintää:
ssh-add -l -E sha256
Jos tietovarasto kuuluu organisaatiolle, joka käyttää SAML-kertakirjautumista, avaimen lisääminen tilillesi ei välttämättä riitä. GitHub dokumentoi, että SSH-avain voi myös vaatia organisaation valtuutuksen. Valitse Asetukset > SSH- ja GPG-avaimet ja valitse Määritä kertakirjautuminen avaimelle ja valtuuta asiaankuuluva organisaatio, kun kyseinen hallinta on käytettävissä. Katso GitHubin SSH-avaimen kertakirjautumisen valtuutusopas .
Onnistunut SSH-testi tunnistaa todennetun GitHub-tilin ja vahvistaa, että avaintenvaihto toimii.
Onnistumisviestin tulisi tervehtiä GitHub-käyttäjätunnustasi ja selittää, että GitHub ei tarjoa käyttöoikeuksia komentotulkille. GitHub huomauttaa myös, että tämä testi voi päättyä tilakoodiin 1, vaikka todennus onnistuisi, joten arvioi sitä todennusviestin perusteella sen sijaan, että odottaisit normaalia interaktiivista komentotulkkia.
Jos testi päättyy edelleen Permission denied (publickey), suorita yksityiskohtaisessa tilassa:
ssh -vT git@github.com
Etsi rivejä, kuten Offering public key. Jos loki ei koskaan tarjoa odottamaasi avainta, ongelma on paikallisessa avaimen valinnassa tai agentin määrityksissä. Jos tarkoitettua avainta tarjotaan, mutta se hylätään, tarkista, onko kyseinen julkinen avain liitetty oikeaan GitHub-tiliin ja tarvitaanko kertakirjautumisvaltuutus.
Useita GitHub-tilejä: tarkista, mitä identiteettiä todellisuudessa käytetään
Jos käytät työ- ja henkilökohtaisia tilejä samalla tietokoneella, onnistunut SSH-todennus voi silti päätyä väärälle tilille. GitHub dokumentoi käyttämällä IdentitiesOnly=yestai tiettyä tunnistetiedostoa SSH:n tarjoaman avaimen hallitsemiseksi. Kertaluonteista diagnostiikkaa varten:
Jos GitHub tervehtii väärää käyttäjätunnusta, olet löytänyt ristiriidan. Määritä erilliset avaimet tai isäntäaliakset sen sijaan, että poistaisit ja lisäisit avaimia toistuvasti uudelleen. GitHubin virallinen usean tilin opas käsittelee tätä tapausta yksityiskohtaisemmin.
5. Yritä repository-komentoa uudelleen ja vaihda lähestymistapaa vain, jos todisteet viittaavat muualle
Kun ssh -T git@github.comkäyttäjä on todennettu odotettuna käyttäjänä, yritä varsinaista arkistotoimintoa uudelleen:
git fetch origin
git pull
git push
Viimeinen laatutarkistus on varsinainen Git-operaatio: onnistuneen todennuksen pitäisi johtaa onnistuneeseen repositorion käyttöön, kun tilillä on siihen käyttöoikeudet.
Jos SSH-todennus onnistuu, mutta Git raportoi nyt tietovarastokohtaisen käyttöoikeusvirheen, lopeta SSH-avaimen muuttaminen. Siinä vaiheessa avain on jo tehnyt tehtävänsä. Varmista, että todennetulla tilillä on pääsy tietovarastoon, että omistaja ja tietovaraston nimi etä-URL-osoitteessa ovat oikein ja että organisaatio on myöntänyt vaaditun roolin. GitHubin erillinen tietovaraston käyttöoikeuksien vianmäärityssivu selittää tapauksen, jossa avain kuuluu tilille, jolla ei ole käyttöoikeutta.
Jos portti 22 on estetty
Palomuuri tai välityspalvelin voi estää kelvollista SSH-kokoonpanoa pääsemästä GitHubiin portin 22 kautta. Testaa GitHubin dokumentoitua SSH-over-HTTPS-päätepistettä:
ssh -T -p 443 git@ssh.github.com
Tässä suorassa portti-443-testissä isäntänimi on ssh.github.com, ei . Jos se toimii, GitHub dokumentoi tämän SSH-kokoonpanon:github.com
Host github.com
Hostname ssh.github.com
Port 443
User git
Testaa sitten uudelleen ssh -T git@github.com. Katso GitHubin SSH-opas portin 443 kautta . Tämä kiertotapa ei koske kaikkia GitHub Enterprise -ympäristöjä, ja välityspalvelimet voivat silti häiritä.
Mistä tietää, milloin lopettaa saman korjauksen kokeileminen
Mitä havaitset
Mitä se tarkoittaa
Seuraava siirto
ssh-add -lei näytä tarkoitettua avainta
Asiakas ei pysty tarjoamaan oikeaa yksityistä avainta
Korjaa agentti tai avainpolku
Yksityiskohtainen SSH ei koskaan näy Offering public keyaiotulla avaimella
GitHub ei hyväksy kyseistä avainta yritetylle identiteetille.
Tarkista ladattu julkinen avain, kohdetili ja kertakirjautumisen valtuutus
SSH tervehtii väärää GitHub-käyttäjätunnusta
Eri tilin avainta käytetään
Erota tiliavaimet ja valitse erikseen haluttu identiteetti
SSH onnistuu, mutta repositorio hylkää push- tai fetch-pyynnöt
Todennus toimii; ongelmana on nyt tietovaraston todennus tai URL-osoite
Tarkista tietovaraston käyttöoikeudet ja etäomistajuus
Portti 22 ei voi muodostaa yhteyttä ollenkaan
Verkko saattaa estää tavallisen SSH:n käytön.
Testaa porttia 443 tai käytä HTTPS:ää
Yleisiä korjauksia, jotka usein vievät aikaa
Avainten generointi toisensa jälkeen tarkistamatta, mitä SSH tarjoaa. Useammat avaimet voivat vaikeuttaa valintaa. Käytä ensin ssh -vTja ssh-add -l -E sha256.
GitHub-käyttäjänimesi käyttäminen ennen @github.com. GitHubin SSH-päätepiste odottaa SSH-käyttäjää git. GitHub-identiteettisi määritetään GitHubin tunnistaman julkisen avaimen perusteella.
Yksityisen avaimen lataaminen. Älä tee tätä. GitHub tarvitsee julkisen .pubarvon; yksityinen avain pysyy koneellasi tai hyväksytyssä avainsäilössä.
Onnistunut SSH-testi takaa push-yhteyden. Se todistaa tilin todennuksen. Säilön valtuutus on erillinen tarkistus.
Kertakirjautumisen (SSO) ohittaminen. Organisaation resurssit saattavat vaatia ylimääräisen SSH-avaimen valtuutuksen, vaikka avain olisi henkilökohtaisella tililläsi.
Git-komentojen käyttö järjestelmänvalvojana. Gitin suorittaminen toisena käyttöjärjestelmän käyttäjänä voi muuttaa käytettävää kotihakemistoa, SSH-kokoonpanoa, agenttia ja avaimia.
Kun HTTPS on parempi vastaus
SSH:n käyttö ei ole pakollista. GitHub tukee myös HTTPS-etäyhteyksiä. Jos lukittu yritysverkko, hallittu päätepistekäytäntö tai välityspalvelin tekee SSH:n käytöstä epäkäytännöllistä, tietovaraston etäyhteyden vaihtaminen HTTPS:ään voi olla yksinkertaisempaa kuin verkon vastustaminen. Kyseessä on todennusmenetelmän muutos, ei SSH-kokoonpanon korjaus, joten käytä sitä silloin, kun ympäristösi tekee SSH:sta ei-toivotun, äläkä piilota ratkaisematonta avainristiriitaa.
SSH:n osalta luotettavin pysähdyskohta on näyttöön perustuva: odotettu avain ladataan, GitHub tunnistaa sen odotetuksi tiliksi, organisaatio valtuuttaa sen tarvittaessa ja varsinainen Git-operaatio onnistuu. Jos jokin näistä tarkistuksista epäonnistuu, muuta vain epäonnistunutta tasoa. Tämä pitää vianmääritysprosessin hallinnassa ja välttää toimivien avainten tarpeettoman korvaamisen.