Die Meldung "Schlüssel ist ungültig" auf GitHub


75

Ich habe für eine neue Server - Installation SSH - Schlüssel erzeugt nach dem Verfahren skizziert hier . Wenn ich jedoch den Inhalt von id_rsa.pubin meine Schlüsselliste auf GitHub kopiere , wird die Fehlermeldung "Schlüssel ist ungültig. Stellen Sie sicher, dass Sie die Datei korrekt kopiert haben." Angezeigt.

Der generierte Schlüssel ist gültig und ich kopiere ihn genau so wie er ist (alles in einer Zeile ohne Leerzeichen am Anfang / Ende).

Hat jemand eine Idee, was los sein könnte?


1
Nur um sicher zu gehen, haben Sie das eingefügt ssh-rsa, das vor dem Schlüssel selbst steht, ja?
David Cain

Antworten:


127

Ich bin hierher gekommen, weil ich das gleiche Problem hatte. Aufgrund Ihrer Frage wurde mir klar, dass ich den Inhalt ohne die .pubErweiterung aus der falschen Datei kopierte (es war mein privater Schlüssel, dh die id_rsaDatei, die jederzeit privat gehalten werden sollte!).

Von einem MAC:

vi ~/.ssh/id_rsa.pub

Kopieren Sie genau vom Ende (mit dem letzten Buchstaben Ihrer E-Mail-Domain-Endung) des Zeichenblocks bis zum Anfang, der mit ssh-rs beginnt ...

Wenn es nicht funktioniert, kopieren Sie sicherlich nicht richtig.

Es funktionierte.

Wenn Sie unter Windows arbeiten , verwenden Sie den Editor und kopieren Sie ihn wie oben beschrieben.

Ich hoffe das hat geholfen.


13
Aus einem sehr obskuren Grund wurde beim Kopieren und Einfügen von Emacs das \ n nach ssh-rsa entfernt, was das Problem verursachte. Das Einfügen von Kopien aus vi löste das Problem. Da Sie mir die Idee gegeben haben, das zu versuchen, werde ich Ihnen die Antwort geben!
user2398029

2
vi hat bei mir nicht funktioniert. Ich musste den Befehl cat (OSX) verwenden, um es auf das Terminal zu drucken und seine Ausgabe zu kopieren. Danke, dass du mich auf den richtigen Weg gebracht hast.
Jeremiah

Das Kopieren aus vim hat für mich funktioniert, aber das Kopieren des Ergebnisses des Dateinamens der Katze hat nicht
funktioniert

Aus irgendeinem Grund konnte mein Vim den Schlüssel nicht einwickeln. Aus dem Erhabenen kopiert, um den ganzen Schlüssel zu erhalten. Hat funktioniert.
John Cramerus

vihabe den Trick gemacht, ich habe Nano verwendet, das die Datei mit $Symbol abgeschnitten wird
Jacky

59

Hier sind einige Schritte, die beim Kopieren / Einfügen Ihres öffentlichen Schlüssels überhaupt nicht klar sind. (Für die Aufzeichnung habe ich Putty Key Generator für meine Schlüssel verwendet.)

  • Geben Sie in der ersten Zeile ssh-rsa ein.
  • Stellen Sie sicher, dass Sie nach ssh-rsa ein Leerzeichen hinzufügen
  • Wenn Sie den Schlüssel kopieren / in das Textfeld Schlüssel einfügen, sollten die \ n Zeichen (x0A) beibehalten werden. Wenn Sie Notepad unter Windows verwenden, werden diese neuen Zeilen erst angezeigt, wenn Sie den Text nach Github kopieren.

Beachten Sie, dass in diesem Screenshot nach ssh-rsa ein Leerzeichen steht (siehe Cursor). Der Text des öffentlichen Schlüssels enthält außerdem drei \ n Zeichen, sodass Sie den Text des öffentlichen Schlüssels dreimal in der nächsten Zeile im Textfeld sehen können.SSH RSA-Schlüssel


6
In meiner Datei id_rsa.pub fehlte der Teil "ssh-rsa". Das manuelle Hinzufügen auf Github hat den Trick getan.
Furgas

7
In GitLab (getestet 7.4.3) können SSH-Schlüssel nur hinzugefügt werden, wenn (wie oben vorgeschlagen) die Zeichen für neue Zeilen hinzugefügt werden ssh-rsaund nicht .
JD Knight

2
Dies muss ein kittspezifisches Problem sein. Ich hatte den gleichen Fehler mit Kitt
jpaugh

1
@JamesLawruk Übrigens ignoriert GitHub (und, glaube ich, jedes ssh-verwendende Programm) alle Zeilenumbruchzeichen in der Schlüsseldatei. (Das ist der Grund , warum Sie erlaubt es in drei Zeilen aufgeteilt --- bei eher willkürlich Punkte.)
jpaugh

2
Das Hinzufügen von "ssh-rsa" mit einem Leerzeichen danach hat mir geholfen. Danke vielmals.
Ales

17

Ich versuche verschiedene Möglichkeiten, aber keine davon hilft (mein Betriebssystem ist Ubuntu). Dann überlegte ich, ob ich den Inhalt von ~ / .ssh / id_rsa.pub mit dem Befehl "more" drucken kann.

Es tut mir leid, als ich keinen Ruf habe, Bilder zu posten! wenn ich habe, werde ich es posten!

Hier ist eine URL, unter der Sie das Bild sehen können:

Geben Sie hier die Bildbeschreibung ein

Ich habe den Inhalt von der Kommandozeile kopiert und es hat funktioniert !!!


1
Veröffentlichen Sie die Bild-URL, einige Benutzer können sie für Sie zum Text hinzufügen.
DontVoteMeDown

Laden Sie Bilder auf eine Website hoch und teilen Sie Links. Um die Frage zu lösen
Hamad

@DontVoteMeDown Ich habe die URL geteilt. Kopieren Sie einfach den Inhalt und es wird funktionieren!
Sparks_Fly

1
@ Hamad Ich habe die URL geteilt.
Sparks_Fly

Danke, das hat in der Tat funktioniert ... jeder hat seine eigenen Theorien. Dinge sollten nicht so "magisch" sein, wenn es um so etwas wie SSH-Schlüssel geht. Was für ein Zugunglück, das SSH-Schlüssel hinzufügt, ist auf Github.
Samaursa

10

Ich weiß, dass diese Frage jetzt ein cpl Jahre alt ist, aber wenn jemand im Jahr 2018 darauf stößt:

dann ist unten ein Kinderspiel:

Mein Problem war, dass ich versucht habe, den privaten Schlüssel zu kopieren

id_rsa

anstelle von Inhalten mit öffentlichem Schlüssel

id_rsa. Kneipe

als mein SSH-Gitlab-Repository-Schlüssel, also nach Ihnen:

ssh-keygen -t rsa -C "your@email.com" -b 4096

Bitte denken Sie an die .pub- Dateierweiterung, von der kopiert werden soll:

  • OSX :

  pbcopy <~ / .ssh / id_rsa. Kneipe

  • Linux :

  xclip -sel clip <~ / .ssh / id_rsa. Kneipe

  • Windows PowerShell

  cat ~ / .ssh / id_rsa. Kneipe | Clip


Fügen Sie es dann als SSH-Schlüssel in Ihr Gitlab / Github oder ein anderes Repository ein

Das ist absolut sinnvoll, da Sie immer nur Ihren öffentlichen Schlüssel teilen sollten, nicht den privaten :)


3

Empfohlen von GitHub

Kopieren der SSH-KEY:

Ich habe mit gearbeitet, xclipum den id_rsa.pubSchlüssel wie folgt zu kopieren :

1. Installieren xclip

sudo apt-get install xclip

2. Kopieren mit xclip

xclip -sel clip < ~/.ssh/id_rsa.pub


Viel Glück.


3

In Fenstern,

Kopieren Sie einfach die nackten Schlüsseldaten aus der Schlüsseldatei und entfernen Sie neue Zeilen. Schreiben Sie dies unten in das Dialogfeld, um Ihr Problem zu lösen. ssh-rsa Schlüssel

HINWEIS: Zwischen ssh-rsa und key ist Platz

Und du bist fertig.


3

Jemand schlug vor, es zu verwenden, $ vi ~/.ssh/id_rsa.pubaber es funktionierte nicht für mich.

Stattdessen habe ich den $ cat ~/.ssh/id_rsa.pubBefehl auf dem Windows-Computer verwendet, um auf dem Terminal auszudrucken und ihn dann zu kopieren.


2

Nur für diejenigen, die in die Zukunft schauen, ist ein weiteres häufiges Problem das Umschließen von Wörtern. Wenn Sie beispielsweise ausführen cat ~/.ssh/id_rsa.pub, können Zeilen umbrochen werden, wodurch \bei jedem Zeilenumbruch zusätzliche Zeichen hinzugefügt werden . Entfernen Sie diese und Ihr Schlüssel sollte gut funktionieren.


2

Wenn Sie tatsächlich den Inhalt Ihres id_rsa.pubSchlüssels kopiert haben (in einer durchgehenden Zeile), sollte das Ergebnis folgendermaßen aussehen (von der Hilfeseite von The GitHub ssh ):

SSH-Schlüssel

Der OP-Louismus bestätigt ein Problem beim Kopieren und Einfügen:

  • Aus einem sehr obskuren Grund wurde durch das Einfügen von Kopien aus Emacs das \nAfter-SSH-RSA entfernt , und das verursachte das Problem.
  • Das Einfügen von Kopien aus vi löste das Problem .

2

Ich hatte das gleiche Problem, obwohl ich den öffentlichen Schlüssel von der catAusgabe direkt vom Terminal (Cmder / ConEmu) kopiert habe. Es scheint, dass die Methode, mit der Sie den öffentlichen Schlüssel kopieren, einen Unterschied macht. Hier ist eine Möglichkeit zu überprüfen:

$ ssh-keygen -l -f ~/.ssh/id_rsa.pub
4096 SHA256:...

Fügen Sie dann den fehlgeschlagenen Schlüssel in eine neue Datei ein und versuchen Sie Folgendes zu überprüfen:

$ ssh-keygen -l -f test.pub
test.pub is not a public key file.

In meinem Fall hatte ich den Schlüssel von der Terminalausgabe mit kopiert cat; stattdessen den Schlüssel von vimfunktioniert bekommen. So öffnen Sie den Schlüssel in vim mit aktiviertem Zeilenumbruch:

$ vim "+set wrap" ~/.ssh/id_rsa.pub

Ich vermute , dass der Terminal - Emulator kann etwas damit zu tun haben , wie ich dieses Problem nicht mit Terminal.app gehabt haben.


Es hat bei mir funktioniert: Putty SSH von Windows auf Linux, öffnen Sie die Schlüsseldatei mit vi und kopieren Sie sie aus Putty, indem Sie sie auf dem Bildschirm auswählen und einfügen. Seltsame Katze hat nicht funktioniert.
Alexandru Trandafir Catalin

Benutzte Puttygen, das mir die volle Linie gab, nicht irgendeine Kneipendatei, die ich herumliegen hatte.
Pysis

0

Wenn Sie Sublime verwenden, können Sie ssh-key korrekt sehen. Überprüfen Sie, ob id_rsa.pub vorhanden ist

ls -al ~/.ssh

Wenn es vorhanden ist, öffnen Sie es mit erhabenem Text

sudo subl /home/user_name/.ssh/id_rsa.pub

Kopieren Sie dann Ihren öffentlichen SSH-Schlüssel und fügen Sie ihn ein.


0

In meinem Fall musste ich nach meiner E-Mail (nach der gesamten Schlüsselzeichenfolge) eine zusätzliche weiße Regel hinzufügen, bevor sie akzeptiert wurde. Ich habe dies zufällig herausgefunden, nachdem ich versucht hatte, meinen SSH-Schlüssel wie auf Gitlab eingegeben zu kopieren.

pbcopy von meinem Pub-Schlüssel direkt aus der Kommandozeile hat nicht funktioniert. Die Kopie von gitlab mit der zusätzlichen weißen Regel am Ende hat es geschafft.


0

Ich hatte gerade dieses Problem. Super frustrierend. Ich nahm an, dass meine Situation den Fall des Problems beeinflusst haben könnte. Ich verwende ein Tablet und versuche, den Schlüssel auf der Githubs-Website über meinen Tablet-Browser (Chrome) einzurichten. Ich kopiere den Schlüssel von einer SSH-App, die mit meinem Remote-Linux-Server verbunden ist.

Was am Ende passierte, war, dass beim Kopieren des Schlüssels in den Browser eine Reihe von Zeilenumbrüchen eingeführt wurden. Darüber hinaus wurde an jedem Punkt, an dem eine neue Linie eingefügt wurde, ein Zeichen entfernt.

Damit es funktioniert, musste ich jeden neuen Zeilenumbruch manuell finden und dann nach diesem Teil des Schlüssels suchen, um das fehlende Zeichen zu finden. Ich habe dann das Zeichen hinzugefügt und die neue Zeile entfernt. Nachdem ich jede Änderung aufgespürt hatte, funktionierte der Schlüssel einwandfrei.

Übrigens habe ich selbst keine neuen Zeilenumbrüche hinzugefügt, wie sie von anderen nach dem ssh-rsa erwähnt wurden.

Hoffentlich hilft das anderen. Ich habe keine Ahnung, warum es passiert ist. Dumm, dass das Kopieren in die Zwischenablage den kopierten Text verändern würde. Oh, ich habe es auch direkt aus Vim kopiert.


0

Wenn Sie Bash für Windows als Terminal verwenden und über Umschalt + Hervorheben + Strg-C kopieren, funktioniert diese Lösung möglicherweise für Sie:

  1. Nachdem Sie den Schlüssel kopiert und in den Editor eingefügt haben:

Beispiel ssh Schlüssel

  1. Gehen Sie nun zu Bearbeiten> Alle auswählen oder Strg-A

Text hervorgehoben

  1. Die großen Mengen an blauen Bereichen sind Leerzeichen. Sie müssen sie entweder mit der Rücktaste oder der Löschtaste löschen. Lassen Sie das Leerzeichen in den grünen Kreisen.

Geben Sie hier die Bildbeschreibung ein

  1. Sie sollten nun in der Lage sein, diese bearbeitete Version zu kopieren und in Github einzufügen.

Geben Sie hier die Bildbeschreibung ein


0

Es ist ein häufiges Problem, mit dem wir beim Generieren des Schlüssels konfrontiert sind. Während der SSH-Generierung erhalten wir zwei Diff-Dateien, eine ist id_rsa und id_rsa.pub. Hier ist die Datei mit der Pub-Erweiterung die öffentliche Schlüsselhalterdatei. Sie müssen den Inhalt aus dieser Datei kopieren und zum Github hinzufügen.

HINWEISE: 1. Der Inhalt der öffentlichen Schlüsseldatei beginnt mit 'SSH-RSA'. 2. endet mit Ihrer Github-E-Mail-ID. Beispiel: Wenn Sie Github bei @ gmail.com registriert haben, hat die Pub-Datei zuletzt die angegebene E-Mail-ID


0

bei Verwendung von vs Code

code ~/.ssh/id_rsa.pub öffnet die .pubDatei, kopiere sie nach Github


0

So kopieren Sie den gesamten Inhalt von id_rsa.pub in die Zwischenablage:

Führen Sie> aus pbcopy ~/.ssh/id_rsa.pub


0

Ich habe versucht, meinen öffentlichen Schlüssel hochzuladen, und die Meldung "Ungültiger Schlüssel" wurde angezeigt. Mein Format war nicht korrekt, da am Ende des Schlüssels zusätzliche Leerzeichen vorhanden waren. Es sollte im Format sein:ssh-rsa <public-key>

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.