Git-Klon. key_load_public: ungültiges Format Zugriff verweigert (publickey)

Lesezeit: 5 Minuten

Ich habe puttygen.exe unter Windows 10 verwendet, um private und öffentliche Schlüssel zu generieren. Ich habe diese Schlüssel in C:\Users\Alexander\.ssh\ gespeichert.

Der öffentliche Schlüssel wurde dem Remote-Repo hinzugefügt (nicht von mir. Ich habe keinen Zugriff).

Dann habe ich den Befehl in Git Bash verwendet:

git clone git@ipaddress:project_name.git

Und ich bekam einen Fehler:

key_load_public: invalid format
Permission denied (publickey).
fatal: Could not read from remote repository.

Beispielschlüssel (nur zum Beispiel generiert)

id_rsa.ppk

PuTTY-User-Key-File-2: ssh-rsa
Encryption: none
Comment: rsa-key-20170110
Public-Lines: 6
AAAAB3NzaC1yc2EAAAABJQAAAQEAx0UhtZcgUT5XpoNlcoVFGHbArEsARQVCv5m0
TRh90Xq15gxOvL+x7I0B29xOuOP054RtQaOzHqnKUzpMdrIoZFkYEYJ11p42kC05
PVR/CwtKBuONJZzoIveJlNG1IhbC3G8DMZD5j68T5OVbCqftHMIBe4CTr7TewJ9T
/lmSZPytWXk/Xtcvn1i1TQZS2ShtSNOwtx77fLzkVmC6F4uM2JgJ9bSM2xQZTX/j
DYZTtoEsmyBadANAEZx4kQAoITwxXVRPBPJnB74EdSMXNhrDBJ+sZSEy7kxmc3a/
UK6CzdN3wiEMd/Bb1nuzR2cpWrWhniG66lnOTJb3sF8iiVtw7Q==
Private-Lines: 14
AAABAEtmRBsyQ5RcxzgWCrW14sr8gEExIrJVBH/ZSyQXGtmkDXmjysP1gZfGpsHk
qCpIaoEdWcXPPNsrfPzloGRDaTq57W5otvdCyImUkjLhs4ejaB5IQz6qEqVya2i+
DS9+O+S0YhLBO9WAhBFrijtiIl3oivB11wQ2mXlRCwZLZ9MugQ3rPfS0O/E2asrO
+MyiR2uv84lVb2wUT0Be3eeubnT2Qp8CoX3qV93LwBM053tepmD0jtSBsaXepADw
mdjBfIkUm+z/69PKtsEoYtIRe5DQRGQhUrwZasJnrfwAvdkr56NKM/rEL0ocUPDX
pXQalD88fKHKog5pr25c8aImklUAAACBAPmqhoRBWy+VJxgZ2BeMYv2PbmQCrQyp
ZVqua9byU59cANjarPcEb1zSUVEJyO8KlTW1eiTeMrya3cdrqbk3Rhp8XgolRsrv
ZK2rMQxP5nIoHyndtG1CCVqrWnwjIsb4r4cq2aBaUWjQJ+ofpiUHVkHev+h58zEA
zpDZs0Jrv5n7AAAAgQDMU04pqQ1hnv050gs8C2Gy+DjbW8b/NbQl64x0HFik/lWB
CRLrCd341ZQWY0PcU5ZjwNa8GwwJZPJI2bX84/a7dq2ENnT1+uYqpuK8lnPTcBDy
WjlGcf/fWJyJpdLqqXkMZ7or4k9ReVIXz9A8xRkhGEH2xM8Vk2fyoLY88RFUNwAA
AIA+zxdPdF8dPr8HwTJ5Pb0NQjl2likOxR24QmqxlCu/bD1p8R1tZzX5Jh2HP2on
RO+KVLYHzNKqtKRZW/MHftYcm6AvYLhP7hxG/tFoNM9lEmsqdJenxaWP745LP9Pc
k3qh7kC4KfTXyfgsd+C6dXzqhAokz81zL41QtyJxlQzR2w==
Private-MAC: ce79771084cbabf61fc2bf3b1403e42a9957e2af

id_rsa.pub

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20170110"
AAAAB3NzaC1yc2EAAAABJQAAAQEAx0UhtZcgUT5XpoNlcoVFGHbArEsARQVCv5m0
TRh90Xq15gxOvL+x7I0B29xOuOP054RtQaOzHqnKUzpMdrIoZFkYEYJ11p42kC05
PVR/CwtKBuONJZzoIveJlNG1IhbC3G8DMZD5j68T5OVbCqftHMIBe4CTr7TewJ9T
/lmSZPytWXk/Xtcvn1i1TQZS2ShtSNOwtx77fLzkVmC6F4uM2JgJ9bSM2xQZTX/j
DYZTtoEsmyBadANAEZx4kQAoITwxXVRPBPJnB74EdSMXNhrDBJ+sZSEy7kxmc3a/
UK6CzdN3wiEMd/Bb1nuzR2cpWrWhniG66lnOTJb3sF8iiVtw7Q==
---- END SSH2 PUBLIC KEY ----

Was kann hier falsch sein?

Benutzer-Avatar
Jakuje

Git verwendet OpenSSH und unterstützt keine PuTTY-Schlüsselformate. Sie müssen es in das OpenSSH-Format konvertieren. Dies wurde in der SO-Dokumentation beschrieben, jetzt in der Antwort auf Notable to add SSH key in Jenkins configuration:

  • Öffnen Sie PuttyGen
  • Klicken Sie auf Laden
  • Laden Sie Ihren privaten Schlüssel
  • Gehe zu Konvertierungen->OpenSSH exportieren und exportieren Sie Ihren privaten Schlüssel
  • Kopieren Sie Ihren privaten Schlüssel nach ~/.ssh/id_rsa

  • Naja, die wirst du wohl verschieben müssen id_rsa.pub weg, weil der Client es nicht lesen kann.

    – Jakuje

    10. Januar 2017 um 9:03 Uhr

  • Es hat nicht geholfen. Ich denke, der generierte öffentliche Schlüssel ist für OpenSSH nicht gültig. Es sollte mit beginnen ssh-rsa AAAAB3NzaC1yc.... Aber mein Schlüssel beginnt mit einigen Kommentaren und es gibt keine ssh-rsa-Wörter.

    – Alex Pawlow

    10. Januar 2017 um 18:51 Uhr

  • Ja. Verschieben Sie den öffentlichen Schlüssel oben weg oder ersetzen Sie ihn durch das openssh-Format.

    – Jakuje

    10. Januar 2017 um 19:03 Uhr

Entschuldigung für die Beantwortung einer alten Frage, aber die aufgeführten Lösungen haben nicht geholfen. Folgendes hat bei mir funktioniert:

Git verwendet möglicherweise nicht den richtigen SSH-Client für ausgehende Verbindungen.

Ich hatte ein ähnliches Problem und fand schließlich eine Antwort, die mich auf den richtigen Weg brachte, um es zu beheben. Soweit ich weiß, generierten sowohl Git als auch meine Befehlszeile Schlüsselpaare mit openssh, aber Git versuchte, sie mit seinem eigenen SSH-Client zu öffnen.

Ich bin mir nicht sicher, warum Git zwei verschiedene SSH-Clients verwenden würde, einen zum Generieren und einen zum Verbinden, aber dies wurde dadurch belegt, dass ich meinen Schlüssel verifizieren konnte, indem ich eine SSH-Sitzung mit GitHub öffnete, aber keine Verbindung zu einem Repository herstellte. Eine weitere Überprüfung schien die Theorie zu bestätigen:

C:\where ssh
C:\Windows\System32\OpenSSH\ssh.exe

Und in Git-Bash:

$ where ssh
C:\Program Files\Git\usr\bin\ssh.exe

Während das Ausprobieren der in der Antwort aufgeführten Befehle mein Problem nicht behoben hat, führten sie mich zu einer viel erfolgreicheren Google-Suche, die mich erwischte zu diesem GitHub-Kommentar, die den folgenden einzeiligen Befehl enthielt, der in git bash ausgeführt werden sollte:

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

Dieser Befehl wird nichts ausgeben, wenn er funktioniert, aber er wird Git so einstellen, dass es den mit Windows gepackten SSH-Client anstelle des mit Git mitgelieferten verwendet. Nachdem ich diesen Befehl ausgeführt hatte, funktionierte Git einwandfrei für mich.

Seltsamerweise gibt das Ausführen von “where ssh” in git bash jetzt zwei Pfade zurück, aber es scheint keine weiteren Probleme zu verursachen:

$ where ssh
C:\Program Files\Git\usr\bin\ssh.exe
C:\Windows\System32\OpenSSH\ssh.exe

Überprüfen Sie die nächsten Dinge:

  1. Überprüfen Sie, ob Sie eine leere haben id_rsa.pub Datei in der ~/.ssh Verzeichnis. Es könnte mehr als eine .pub-Datei enthalten (je nachdem, was Sie bereits erstellt haben). Wenn Sie eine leere .pub-Datei finden, gehen Sie zu dem Ort, an dem sie auf einem Remote-Server aufbewahrt werden soll, in der ~/.ssh/authorized_keys Datei (auf dem Server). Kopieren Sie die Werte und fügen Sie Ihre lokale öffentliche Schlüsseldatei ein. Speichern.

  2. Wenn alles in Ihren lokalen öffentlichen Schlüsseln korrekt ist, überprüfen Sie, ob Sie den privaten Schlüssel nicht auf Ihren Server oder ähnliches eingefügt haben.

1055120cookie-checkGit-Klon. key_load_public: ungültiges Format Zugriff verweigert (publickey)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy