Hoe kan ik de Permission failed (publickey)-fout bij het gebruik van Git oplossen?

Ik gebruik Mac Snow Leopard en ik heb zojuist gitgeïnstalleerd.

Ik heb het net geprobeerd

git clone [email protected]:cakebook.git

maar dat geeft me deze fout:

Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Wat mis ik?
Ik heb ook geprobeerd ssh-keygenuit te voeren zonder passphase maar nog steeds dezelfde fout.


Antwoord 1, autoriteit 100%

Als de gebruiker nog niet eerder een openbaar/privé-sleutelpaar voor ssh heeft gegenereerd

Deze informatie werkt op theChaw, maar kan worden toegepast op alle andere git-repositories die SSH-pubkey-authenticaties ondersteunen. (Zie bijvoorbeeld [gitolite][1], gitlab of github.)

Begin eerst met het instellen van uw eigen openbare/privé-sleutelpaarset. Dit
kan zowel DSA als RSA gebruiken, dus in principe zal elke sleutel die u instelt werken.
Op de meeste systemen kun je ssh-keygen gebruiken.

  • Eerst wil je cd in je .ssh-map plaatsen. Open de terminal en voer het volgende uit:

cd ~/.ssh && ssh-keygen

  • Vervolgens moet je dit naar je klembord kopiëren.
  • Op OS X voer je uit: cat id_rsa.pub | pbcopy
  • Op Linux voer je uit: cat id_rsa.pub | xclip
  • Op Windows (via Cygwin/Git Bash) voer je uit: cat id_rsa.pub | clip
  • Op Windows (Powershell) voer je uit: Get-Content id_rsa.pub | Set-Clipboard(Thx to @orion elenzil)
  • Voeg uw sleutel toe aan uw account via de website.
  • Stel eindelijk je .gitconfig in.
  • git config --global user.name "bob"
  • git config --global user.email bob@...
    (vergeet niet je opdrachtregel opnieuw te starten om ervoor te zorgen dat de configuratie opnieuw wordt geladen)

Dat is het dat je goed zou moeten doen om te klonen en af te rekenen.

Meer informatie is te vinden op https://help.github.com/articles/ genereren-ssh-keys(met dank aan @Lee Whitney)
[1]: https://github.com/sitaramc/gitolite

Als de gebruiker een eerder ingesteld openbaar/privé-sleutelpaar voor ssh heeft gegenereerd

  • controleer welke sleutels zijn geautoriseerd in uw github- of gitlab-accountinstellingen
  • bepaal welke corresponderende privésleutel moet worden gekoppeld aan uw lokale computer

eval $(ssh-agent -s)

  • definieer waar de sleutels zich bevinden

ssh-add ~/.ssh/id_rsa


Antwoord 2, autoriteit 27%

Uitgebreidere probleemoplossing en zelfs geautomatiseerde reparatie kan worden gedaan met:

ssh -vT [email protected]

Als alternatief kunnen we volgens onderstaande opmerkingen het volgende uitgeven:

ssh -vT [email protected]

of vervang gitlab/github door de Git Instance die uw organisatie gebruikt.

Bron: https://help.github.com/articles/error -permission-denied-publickey/


Antwoord 3, autoriteit 20%

Deze fout kan optreden wanneer u de SSH-URL (Read/Write) gebruikt in plaats van Git Read-Only URL, maar u hebt geen schrijftoegang tot die repo.

Soms wil je gewoon je eigen repo klonen, bijv. implementeren op een server. In dit geval heeft u eigenlijk alleen READ-ONLY-toegang nodig. Maar aangezien dat uw eigenrepo is, kan GitHub SSH-URL weergeven als dat uw voorkeur heeft. In deze situatie, als de openbare sleutel van uw externe host zich niet in uw GitHub SSH-sleutels bevindt, wordt uw toegang geweigerd, wat naar verwachting zal gebeuren.

Een equivalent geval is wanneer u probeert de repo van iemand anders te klonen waartoe u geen schrijftoegang heeft met SSH-URL.

Kortom, als het uw bedoeling is om alleen een repo te klonen, gebruik dan een HTTPS-URL(https://github.com/{user_name}/{project_name}.git) in plaats van SSH-URL ([email protected]:{user_name}/{project_name}.git), waardoor (onnodige) validatie van openbare sleutels wordt vermeden.


Update: GitHub geeft nu HTTPS weer als het standaardprotocol en deze stap kan waarschijnlijk mogelijk misbruik van SSH-URL’s verminderen.


Antwoord 4, autoriteit 14%

De github-help linkheeft me geholpen dit probleem op te lossen. Het lijkt erop dat de ssh-sleutel niet is toegevoegd aan de ssh-agent. Dit is wat ik uiteindelijk deed.

Opdracht 1:

Zorg ervoor dat ssh-agent is ingeschakeld. Het commando start de ssh-agent op de achtergrond:

eval "$(ssh-agent -s)"

Opdracht 2:

Voeg uw SSH-sleutel toe aan de ssh-agent:

ssh-add ~/.ssh/id_rsa

Antwoord 5, autoriteit 5%

Kreeg hetzelfde foutrapport.

Opgelost met het gebruik van HTTP in plaats daarvan. Omdat ik geen “SSH-sleutels” wil instellen voor een test-pc.

URL wijzigen in HTTP bij klonen:

git clone https://github.com/USERNAME/REPOSITORY.git

Mijn probleem is een beetje anders: ik heb een URL ingesteld bij het toevoegen van een bestaande lokale opslagplaats aan remote, met behulp van:

git remote add origin ssh://github.com/USERNAME/REPOSITORY.git

Om te repareren, reset URL HTTP:

git remote set-url origin https://github.com/USERNAME/REPOSITORY.git

BTW, kunt u uw URL met de opdracht te controleren:

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)

Hoop dat dit zal helpen iemand zoals ik. : D


Antwoord 6, Autoriteit 3%

Dit werkt voor mij:

ssh-add ~/.ssh/id_rsa

Antwoord 7, Autoriteit 3%

ik worstelde met hetzelfde probleem, dat is wat ik deed en ik was in staat kloon van de repo. Ik volgde deze procedure voor het iMac .

Eerste stap:. Het controleren als we al het publieke SSH sleutel

  1. Open Terminal.
  2. Geef ls -al ~/.sshom te zien of de bestaande SSH-sleutels aanwezig zijn:

Controleer de directory lijst om te zien of u al een publieke SSH key.Default publiek, zijn een van de volgende d_dsa.pub, id_ecdsa.pub, id_ed25519.pub, id_rsa.pub

Als je niet dan vinden ga dan naar stap 2 anders stap 3 te volgen

Stap 2: Generating public SSH sleutel

  1. Open Terminal.
  2. Geef followong opdracht met u geldig e-mailadres dat u gebruikt voor GitHub ssh-keygen -t rsa -b 4096 -C "[email protected]"
  3. U ziet volgende in terminal Generating public/private rsa key pair. Waar gevraagd wordt naar "Enter a file in which to save the key,"druk op Enter. Deze aanvaardt de standaard locatie te zoeken. Waar gevraagd wordt naar Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]Just druk opnieuw in te voeren.
    Op de prompt, typt u een veilig wachtwoord.
  4. Enter passphrase (empty for no passphrase): [Type a passphrase]druk op enter als u niet wilt Enter same passphrase again: [Type passphrase again]druk nogmaals op enter

Dit genereert id_rsa.pub

Stap 3: Uw SSH-sleutel toevoegen aan de ssh-agent

  1. Interminal type eval "$(ssh-agent -s)"
  2. Voeg je SSH-sleutel toe aan de ssh-agent. Als u een bestaande SSH . gebruikt
    sleutel in plaats van een nieuwe SSH-sleutel te genereren, moet u deze vervangen
    id_rsa in de opdracht met de naam van uw bestaande privésleutel
    het dossier. Voer deze opdracht in $ ssh-add -K ~/.ssh/id_rsa

Kopieer nu de SSH-sleutel en voeg deze ook toe aan je github-account

  1. Voer in terminal deze opdracht in met uw ssh-bestandsnaam pbcopy <
    ~/.ssh/id_rsa.pub
    Dit zal het bestand naar je klembord kopiëren
    Open nu je github-account Ga naar Instellingen > SSH- en GPG-sleutels > Nieuwe SSH-sleutelVoer de titel in en plak de sleutel van het klembord en sla deze op. Voila je bent klaar.

Antwoord 8, autoriteit 3%

Merk op dat (tenminste voor sommige projecten) je een github-account met een ssh-sleutel moet hebben.

Bekijk de sleutels die worden vermeld in uw authenticatieagent (ssh-add -l)
(als je er geen ziet, voeg dan een van je bestaande sleutels toe met ssh-add /path/to/your/key (bijv.: ssh-add ~/.ssh/id_rsa))

(als je geen sleutels hebt, maak er dan eerst een. Zie: http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.htmlof google gewoon ssh-keygen)

Om te verifiëren dat je een sleutel hebt die is gekoppeld aan je github-account:

Ga naar: https://github.com/settings/ssh

U zou ten minste één sleutel moeten zien met een hash-sleutel die overeenkomt met een van de hashes die u zag toen u zojuist ssh-add -ltypte.

Als je dat niet doet, voeg er dan een toe en probeer het opnieuw.


Antwoord 9, autoriteit 2%

Een andere mogelijkheid op Windows, die niet wordt behandeld in een van deze antwoorden, en niet wordt behandeld in de git- of github-documenten over probleemoplossing:

git gebruikt mogelijk een ander openssh-uitvoerbaar bestand dan je denkt.

Ik kreeg de fout Permission denied (public key)toen ik probeerde te klonen of te trekken van github en ssh.dev.azure.com, en ik had alle instructies gevolgd en geverifieerd dat mijn SSH-sleutels zijn correct ingesteld (vanuit het standpunt van SSH) met behulp van ssh -vT [email protected]en ssh -vT [email protected]. En kreeg nog steeds deze fouten:

[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

Uiteindelijk kwam ik erachter dat het probleem is dat Git voor Windows en Windows beide hun eigen versies van openssh hebben. Dit wordt hier gedocumenteerd: https://github.com/desktop/desktop/issues/5641

Ik vertrouwde op de Windows ssh-agent-service om mijn ssh-sleutelwachtzinnen op te slaan, dus git (met zijn aparte versie van openssh) kon mijn privésleutels niet lezen. Ik beschouw het als een bug dat deze foutmelding wordt gebruikt – het is misleidend.

De oplossing was:

git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"

Of in je ~/.gitconfig:

[core]
    sshCommand = 'C:\\Windows\\System32\\OpenSSH\\ssh.exe'

Misschien wordt dit binnenkort in Git voor Windows gefixeerd, maar dit is de 2e keer dat ik tijd heb verspild aan dit probleem.


Antwoord 10, Autoriteit 2%

Visuele gids (Windows)

1 van 2. Git Batch Side

1.1. Open Git Batch (download haar )

1.2. Plak De onderstaande tekst (wijzig in uw Gitub-account-e-mail)

$ ssh-keygen -t rsa -b 4096 -C "[email protected]"

1.3. Druk op ENTER (accepteert de standaard bestandslocatie)

1.4. Klik op ENTER Twee keer (of stel SSH-sleutelpapier in - Gitbub-passfasen DOCS )

> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

1,5. De sleutel genereert:

Uw identificatie is opgeslagen in /c/users/user/.sh/id_rsa ...

1.6. Kopieer de SSH-toets naar uw klembord.

$ clip < ~/.ssh/id_rsa.pub

2 van 2. Github website gebruikerskant

Onder user setting

SSH and GPG keys=> Nieuwe SSH-sleutel:

Plakde code uit stap 1.6

Klaar 🙂


Als iemand geen SSH wil gebruiken use HTTPS:

Github-documenten:https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh


Antwoord 11, autoriteit 2%

Ik kwam hetzelfde probleem tegen omdat ik dacht dat het verschil tussen SSHen HTTPS

is

https://github.com/USERNAME/REPOSITORY.git

ssh://github.com/USERNAME/REPOSITORY.git

Dus ik ben veranderd van HTTPSnaar SSHdoor gewoon https://te veranderen in ssh://er is niets aan het einde van de url veranderd.

Maar de waarheid is:

https://github.com/USERNAME/REPOSITORY.git
[email protected]:USERNAME/REPOSITORY.git

Welke betekent dat ik gewijzigd ben ssh://github.com/USERNAME/REPOSITORY.gitnaar [email protected]:USERNAME/REPOSITORY.githet werkt.

Stomme fout, maar Hope helpt iemand!


Antwoord 12

Ik had een kleine andere situatie, ik was aangemeld bij een externe server en gebruikte Git op de server, toen ik een git-opdracht liep, kreeg ik hetzelfde bericht

  Permission denied (publickey).
   fatal: The remote end hung up unexpectedly

De manier waarop ik heb gerepareerd, was door het bestand / etc / ssh_config op mijn Mac te wijzigen.
van

ForwardAgent no 

Naar

ForwardAgent yes

Antwoord 13

een van de gemakkelijkste manier

Ga naar Terminal -

 git push <Git Remote path> --all

Antwoord 14

Dit zijn de stappen die ik volgde in Windows 10

  1. Open Git Bash.

  2. Genereer openbare sleutel:

    ssh-keygen -t rsa -b 4096 -C "[email protected]"
    
  3. Kopieer gegenereerde sleutel naar het klembord (werkt als CTRL + C)

    clip < ~/.ssh/id_rsa.pub
    
  4. Browser, ga naar GitHub = & GT; Profiel = & GT; Instellingen = & GT; SSH en GPG-toetsen = & GT; Voeg sleutel toe

  5. Geef de sleutelnaam en plak klembord (CTRL + V).

  6. Test ten slotte uw verbinding (Git Bash)

    ssh -T [email protected]
    

Bedankt!


Antwoord 15

Controleer of al uw apps het eens zijn met thuis. MSYS zal het verrassend niet voor u doen. Ik moest een milieuvariabele instellen omdat SSH en Git het niet eens konden zijn over waar mijn .SSH-map was.


Antwoord 16

Bent u in een Corporate Environment ? Is het mogelijk dat uw systeemvariabelen onlangs zijn gewijzigd? Per dit dus antwoord, SSH-toetsen live op %HOMEDRIVE%%HOMEPATH%\.ssh\id_rsa.pub. Dus als %HOMEDRIVE%onlangs is gewijzigd, weet Git niet waar u naar uw sleutel kunt zoeken, en dus alle authenticatiespullen.

Probeer het gebruik van ssh -vT [email protected]. Let op waar het identity filebevindt zich bevindt. Voor mij wijst dat niet naar mijn normale \Users\MyLoginmaar eerder naar een netwerkaandrijving, vanwege een verandering in omgevingsvariabelen die op het netwerkniveau zijn geduwd.

de oplossing? Sinds mijn nieuwe %HOMEDRIVE%heeft dezelfde machtigingen als mijn lokale bestanden, ik heb net mijn .SSH-map daar verplaatst, en noemde het een dag.


Antwoord 17

Ik moest mijn SSH-toetsen naar de hoofdmap kopiëren.
Google Cloud Compute Engine Running Ubuntu 18.04

sudo cp ~/.ssh/* /root/.ssh/

Antwoord 18

jongens, dit is hoe het voor mij werkte:

  1. Open terminal en ga naar de gebruiker [zie bijgevoegde afbeelding]
  2. Open .SSH-map en zorg ervoor dat het geen bestand zoals id_rsa of id_rsa.pub heeft, anders kan het geen bestanden herschrijven
  3. Git - Versie [Controleer op Git-installatie en versie]
  4. git config - global user.email "Uw e-mail-ID"
  5. git config --Global gebruiker.name "Uw naam"
  6. git config --list [zorg ervoor dat je je naam hebt ingesteld & e-mail]
  7. cd ~/.ssh
  8. ssh-keygen, het vraagt om het bestand op te slaan, sta het toe
  9. cat ~/.ssh/id_rsa.pub [Toegang tot uw openbare sleutel & kopieer de sleutel naar gerrit instellingen]

Opmerking: je zou het sudo-commando niet met Git moeten gebruiken. Als je een heel goede reden hebt om sudo te gebruiken, zorg er dan voor dat je het bij elke opdracht gebruikt (het is waarschijnlijk gewoon beter om su te gebruiken om op dat moment een shell als root te krijgen). Als je SSH-sleutels zonder sudo genereert en vervolgens een commando als sudo git push probeert te gebruiken, gebruik je niet dezelfde sleutels die je hebt gegenereerd


Antwoord 19

De basis-GIT-instructies maakten geen verwijzing naar de SSH-sleutels. Door enkele van de bovenstaande links te volgen, vond ik een git-helppagina die stap voor stap precies uitlegt hoe dit voor verschillende besturingssystemen moet worden gedaan (de link zal uw besturingssysteem detecteren en dienovereenkomstig omleiden):

http://help.github.com/set-up-git-redirect/

Het doorloopt alles wat nodig is voor GITHub en geeft ook gedetailleerde uitleg, zoals "waarom een wachtwoordzin toevoegen bij het maken van een RSA-sleutel." Ik dacht ik post het, voor het geval iemand anders er iets aan heeft...


Antwoord 20

Ik kreeg deze fout omdat ik mijn huidige werkdirectory-machtigingen 700 moest geven:

chmod -R 700 /home/ec2-user/

Antwoord 21

Naast het antwoord van Rufinus, is de snelkoppeling om uw ssh-sleutel naar het klembord in Windowste kopiëren:

  • type id_rsa.pub | clip

Referenties:


Antwoord 22

Als u meer dan één sleutel heeft, moet u mogelijk het volgende doen
ssh-add private-keyfile


Antwoord 23

Ik heb dit probleem zojuist ondervonden tijdens het instellen van mijn huidige project, en geen van de bovenstaande oplossingen werkt. dus ik probeerde te kijken wat er echt gebeurt in de debug-lijst met behulp van het commando ssh -vT [email protected]. Ik merk dat de bestandsnaam van mijn privésleutel niet in de lijst staat. dus het hernoemen van de bestandsnaam van de privésleutel naar 'id_rsa' doet het werk. hoop dat dit kan helpen.


Antwoord 24

Het werkte voor mij.

Uw openbare sleutel wordt opgeslagen in het id_rsa.pub;bestand en is de sleutel die u uploadt naar uw account. U kunt deze sleutel op het klembord opslaan door dit uit te voeren:

pbkopie < ~/.ssh/id_rsa.pub

  • kopieer de SSH-sleutel naar het klembord, keer terug naar de webportal.
  • Plak je SSH-sleutel in het veld SSH-sleutel.
  • Geef in het veld Naam een naam op voor de sleutel.
  • opslaan.

Antwoord 25

Het is vrij eenvoudig. Typ het onderstaande commando

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Genereer de SSH-sleutel. Open het bestand en kopieer de inhoud. Ga naar de GitHub-instellingenpagina en klik op SSH-sleutel. Klik op Nieuwe SSH-sleutel toevoegen en plak de inhoud hier. Dat is het 🙂 Je zou het probleem niet meer moeten zien.


Antwoord 26

De eenvoudigste oplossing hiervoor, wanneer u probeert te pushen naar een repository met een andere gebruikersnaam, is:

git remote set-url origin https://[email protected]/USERNAME/PROJECTNAME.git

Antwoord 27

In mijn MAC heb ik dit opgelost met:

cp ~/.ssh/github_rsa ~/.ssh/id_rsa

Om de een of andere reden stopte mijn git met het vinden van de privésleutel in het github_rsa-bestand. Dit gebeurde in een specifieke repo. Ik bedoel dat in andere repositories git normaal bleef werken.

Ik denk dat het een bug is.

Ik kon dit gedrag vinden met ssh -vT [email protected]


Antwoord 28

Ga in MAC naar Terminal

1) Navigeer naar de basismap met het commando - cd ~

2) cd .ssh && ssh-keygen (Voor standaardinstellingen, klik op Enter/Return-toets voor beide ingangen)

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/username/.ssh/id_rsa):      
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/usernmae/.ssh/id_rsa.

3) Doe daarna "ls". je zult het id_rsa.pub bestand vinden.

4) Kopieer de inhoud in het bestand id_rsa.pub (lees met het commando cat - cat id_rsa.pub)

5) Navigeer naar BitBucket of een andere versietool die de SSH-sleutels ondersteunt. Plak de inhoud met de optie Sleutel toevoegen

Dat is het. Probeer nu vast te leggen en te pushen.


Antwoord 29

Ik kreeg een soortgelijke Toestemming geweigerd (publickey)-fouttoen ik probeerde een makefile uit te voeren.

Als alternatief voor de bovenstaande SSH-stappen kunt u de native GitHub voor Mac-toepassing installeren.

Klik op Download GitHub voor Macvan - https://help.github.com/articles/set-up-git#platform-mac

Zodra je de installatie met je git hub-account hebt voltooid (ik heb ook de git hub-opdrachtregelprogramma's geïnstalleerd, maar weet niet zeker of deze stap vereist is of niet), ontving ik een e-mail -

[GitHub] Er is een nieuwe openbare sleutel toegevoegd aan uw account

en mijn fout is verholpen.


Antwoord 30

Ik kreeg dezelfde foutmelding. Mijn probleem was het mengen in sudo.

Ik kon de map waarin ik aan het klonen was niet automatisch maken zonder het git clone-commando te prefixen met sudo. Toen ik dat deed, werd er echter niet goed naar mijn ssh-sleutels verwezen.

Om het te repareren, heb ik via chmod permissies ingesteld op de bovenliggende map waarin ik mijn kloon wilde bevatten, zodat ik ernaar kon schrijven. Toen heb ik git clone uitgevoerd ZONDER een sudo-voorvoegsel. Het werkte toen! Ik heb daarna de rechten weer gewijzigd. Klaar.

Other episodes