SSH Plötzlich zurück Ungültiges Format

23

Vor einiger Zeit habe ich einen Server in AWS eingerichtet und deren generierten SSH-Schlüssel verwendet. Ich habe den Schlüssel für Lastpass gespeichert und ihn von dort zuvor erfolgreich abgerufen und zum Laufen gebracht. Nachdem ich es heute noch einmal versucht habe, kann ich es nicht zum Laufen bringen.

-rw------- 1 itsgreg users 1674 Jun 6 12:51 key_name

Ich habe versucht ssh -i key_name, ssh-keygen -f key_nameaber nichts funktioniert, ich bekomme immer diese Fehlermeldung:

Load key "key_name": invalid format

Gibt es eine Möglichkeit, dies zu beheben?

Gregor Menih
quelle

Antworten:

13

Überprüfen Sie den Inhalt von key_name, wenn der Agent sagt invalid format, dass etwas mit dem Schlüssel nicht stimmt. Sind Sie sicher, dass dies der richtige Schlüssel ist? Auch wenn es nicht der private Schlüssel ist, den Sie benötigen, kehrt der ssh-Agent nicht zurück, invalid formatwenn der Schlüssel funktioniert. Sie können einfach keine Verbindung herstellen. Möglicherweise haben Sie Ihren öffentlichen Schlüssel aus irgendeinem Grund dort abgelegt. Prüfen Sie!

13dimitar
quelle
5
Auf jeden Fall geprüft. Beginnt mit ----BEGIN RSA PRIVATE KEY-----und endet mit -----END RSA PRIVATE KEY-----. Außerdem funktionierte es früher.
Gregor Menih
1
Es ist höchst unwahrscheinlich, aber dennoch möglich, dass die Datei beschädigt ist. Erstellen Sie eine neue und füllen Sie den Inhalt erneut aus lastpass.
13.
2
Wow, das hat tatsächlich geholfen! Nach dem Generieren des neuen Schlüssels bemerkte ich, dass der neue Schlüssel 64 Zeichen pro Zeile hatte, während mein alter Schlüssel 76 Zeichen hatte. Ich formatierte meinen alten Schlüssel neu, sodass er nur 64 Zeichen pro Zeile hatte, dann fing es an zu funktionieren! Mir fehlte auch ein Strich in der ersten Zeile.
Gregor Menih
2
"Mir fehlte auch ein Strich in der ersten Zeile." Dito. Vielen Dank an @ItsGreg dafür. Ich vermisse das erste Zeichen so oft beim Auswählen und Kopieren zwischen Terminals!
starfry
15

Was ich getan habe, um dieses Problem zu beheben, ist, dass ich die PPK-Datei mit konvertiere PuttyGen.

Laden Sie zuerst das urkey.PPKund klicken Sie dann im Konvertierungsmenü auf In Openssh-Dateiformat exportieren. Es wird eine Newkey-Datei erstellt.

jetzt, ssh -i "newkey" [email protected]

Getan. Ich hoffe es hilft.

Ras
quelle
4

Ich habe openssh gebeten, eine bestimmte Identitätsdatei zu verwenden, indem ich sie in der Datei .ssh / config angegeben habe.

Die ursprüngliche Arbeitskonfiguration hatte

IdentityFile = <path to public key file> 

Dies funktionierte nicht mehr ohne Änderungen. Nach einigem Überlegen habe ich den "Pfad zur öffentlichen Schlüsseldatei" oben durch "Pfad zur privaten Schlüsseldatei" ersetzt. Das hat funktioniert. Der Grund dafür ist, dass sowohl öffentliche als auch private Schlüsseldateien gemäß dem RSA-Algorithmus große Peudoprime-bezogene Zahlen aufweisen. Wenn Sie die private Schlüsseldatei durch eine öffentliche Schlüsseldatei ersetzen, werden diese kryptografischen Nummern nicht korrekt aus dem in den Schlüsseldateien gespeicherten base64-Block extrahiert. Es scheint, dass einige Versionen von ssh die .pub-Erweiterung herausfinden und sie verwenden können, um die richtige private Schlüsseldatei zu identifizieren - und andere Versionen tun dies nicht. Dies ist eine weitere Möglichkeit, wie dieser Fehler auftreten kann. Hoffe es hilft jemandem.

vpathak
quelle
In meinem Fall hatte ich Setup- configDatei mit path_to_public_keyund alles funktionierte. Als der Mac jedoch einen harten Neustart durchführte und ein paar Tage später versuchte ich, einen Neustart git pushdurchzuführen, wurde der oben angegebene Fehler angezeigt. Aber als ich es jetzt geändert habe, path_to_private_keyfunktionieren die Dinge ... Hmmm. Nicht sicher warum ..
Lukik
3

Ich hatte das gleiche Problem, und es stellte sich heraus, dass ich aus irgendeinem Grund Zeilentrennzeichen im Windows-Stil (CRLF) in der Datei hatte.

Außerdem muss die Datei mit einem einzelnen LF enden.

Die Dinge wieder in Ordnung zu bringen.

AKX
quelle
Es ist schockierend, dass diese letzte LF so notwendig ist, aber es war tatsächlich teilweise das Problem, mit dem anderen Teil, dass ich die Datei in Windows erstellt habe und dabei CRLF-Zeilenumbrüche verursacht habe. Zu Referenzzwecken dos2unixdient der Befehl zum Konvertieren von CRLF-Zeilenumbrüchen (Windows-Stil) in LF-Zeilenumbrüche (Linux-Stil).
Hashim
1

Sie sollten Ihren PPK-Schlüssel in OpenSSH-Schlüssel konvertieren

So machen Sie es :

  1. Laden Sie PuttyGen herunter und generieren Sie Ihr Schlüsselpaar (falls Sie noch kein Schlüsselpaar haben). Speichern Sie den privaten Schlüssel in Ihrem Ordner (.ppk)
  2. Wenn Sie bereits über den privaten Schlüssel verfügen, laden Sie die Datei mit dem privaten Schlüssel (.ppk), indem Sie auf die Schaltfläche "Laden" klicken. Ansonsten überspringen Sie diesen Schritt
  3. Wählen Sie im Menü "Konvertierungen" die Option "OpenSSH-Schlüssel exportieren" und speichern Sie ihn in Ihrem Ordner
  4. Jetzt können Sie den Schlüssel verwenden, um sich auf Ihrem Server anzumelden, ohne das Kennwort einzugeben. (Ich gehe davon aus, dass Sie den öffentlichen Schlüssel bereits unter /root/.ssh/authorized_keys, chmod 600 /root/.ssh/authorized_keys und dem neu gestarteten SSH-Dämon abgelegt haben.)
Dylan B
quelle
1

Ich bin heute gerade darauf gestoßen, als ich einige Git-Tagging-Tools für meine CI-Pipeline geschrieben habe.

Hier war der Unterschied zwischen meinen beiden Schlüsseln:

$ diff ~/.ssh/gitlab ~/.ssh/git_ssh_key
27c27
< -----END OPENSSH PRIVATE KEY-----
---
> -----END OPENSSH PRIVATE KEY-----
\ No newline at end of file

Ich habe meinen Code so geändert:

     with open(ssh_key_file, 'w') as skf:
-        skf.write(ssh_key)
+        skf.write(ssh_key + '\n')

Und jetzt funktioniert mein SSH-Schlüssel.

TL; DR - Ich denke, Sie müssen eine neue Zeile am Ende Ihres privaten Schlüssels haben.

Robert J
quelle
1

In meinem Fall stellte sich heraus, dass ich Zeilenumbrüche zwischen den Start- / End- "Headern" und den Schlüsseldaten hatte:

-----BEGIN RSA PRIVATE KEY-----

- Key data here -

-----END RSA PRIVATE KEY-----

Entfernen Sie die zusätzlichen neuen Zeilen, so wurde es

-----BEGIN RSA PRIVATE KEY-----
- Key data here -
-----END RSA PRIVATE KEY-----

mein problem gelöst.

user50849
quelle
0

Verwenden Sie Ihren privaten Schlüssel anstelle des öffentlichen Schlüssels.

Richard
quelle
die gleiche Lösung wie meine Antwort - wo auch eine Erklärung hinzugefügt wird
vpathak
0

Ich hatte dieses Problem, weil ich einen Schlüssel in ~ / .ssh hatte, der eigentlich ein ungültiges Format war, und ich hatte viele Schlüssel, was bedeutete, dass SSH sie alle ausprobierte, obwohl ich meine Identitätsdatei im Befehl spezifizierte. Es scheitert einfach, weil ich glaube, es können nur 5 Schlüssel ausprobiert werden, und dann habe ich den Fehler erhalten, der legitim war, nur für die falsche Identitätsdatei. Die Lösung war, nur IdentitiesOnly yesin meiner ~ / .ssh / config zu verwenden.

Elijah Lynn
quelle
0

Ich hatte diesen Fehler, weil am Anfang der Schlüsseldatei eine leere Zeile stand. Leicht zu übersehen, wenn Sie es catausprobieren.

Elijah Lynn
quelle
0

Dies ist auch der Fehler, den ssh (zumindest einige Versionen) ausgibt, wenn Sie eine Passphrase auf Ihrem privaten Schlüssel haben und die Passphrase falsch eingeben, wenn Sie versuchen, eine Verbindung herzustellen.

(Dies geschah insbesondere mit: OpenSSH_7.6p1, LibreSSL 2.6.2, dem integrierten SSH für Mac OS X 10.13.6.)

Stellen Sie also sicher, dass Sie die richtige Passphrase verwenden und die FESTSTELLTASTE deaktiviert ist.

SSH-Benutzer auf OS X.
quelle
-2

Stellen Sie sicher, dass Sie Ihren PRIVATEN Schlüssel umbenennen und die betreffende Dateierweiterung entfernen.

Schritte, die ich gemacht habe

Erstellen Sie Ihren öffentlichen Schlüssel:

Stellen Sie sicher, dass Sie sich in demselben Verzeichnis befinden, in dem Sie den privaten Schlüssel haben

So erstellen Sie den öffentlichen Schlüssel:

ssh-keygen -y -f Private-Key.pem > Public-key.pub

Stellen Sie sicher, dass der PUBLIC-Schlüssel die Dateierweiterung .pub hat

Geben Sie anschließend aus Sicherheitsgründen die entsprechenden Berechtigungen an:

chmod 600 Private-Key.pem
chmod 400 Public-key.pub

DANN der wichtigste Teil und der Grund, warum Sie den Fehler "ungültiges Format" bekommen haben

Stellen Sie sicher, dass Sie Ihren PRIVATEN Schlüssel umbenennen und die Dateierweiterung entfernen:

Entfernen Sie die .pem-Datei von Ihrem privaten Schlüssel.

mv Private-Key.pem Private-Key

oder wenn Sie auf einem Windows-Computer den privaten Schlüssel umbenennen, entfernen Sie einfach den gleichen Namen .pem

SICKFREDO
quelle