it-swarm.com.de

SSH Gibt plötzlich ein ungültiges Format zurück

Vor einiger Zeit habe ich einen Server in AWS eingerichtet und den generierten SSH-Schlüssel verwendet. Ich habe den Schlüssel in Lastpass gespeichert und ihn zuvor erfolgreich von dort abgerufen und zum Laufen gebracht. Nachdem ich das 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 es versucht ssh -i key_name, ssh-keygen -f key_name, aber nichts funktioniert, ich bekomme immer diese Fehlermeldung:

Load key "key_name": invalid format

Gibt es eine Möglichkeit, dies zu beheben?

25
Gregor Menih

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

13
13dimitar

Um dieses Problem zu beheben, habe ich die PPK-Datei mit PuttyGen konvertiert.

Laden Sie zuerst die urkey.PPK, und klicken Sie dann im Konvertierungsmenü auf In Openssh-Dateiformat exportieren. Es wird eine neue Schlüsseldatei erstellt.

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

Erledigt. Ich hoffe es hilft.

20
Ras

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

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

Das zu reparieren machte die Dinge wieder dandy.

6
AKX

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

Die ursprüngliche Arbeitskonfiguration hatte

IdentityFile = <path to public key file> 

Dies funktionierte ohne Änderungen nicht mehr. Nach einigem Überlegen habe ich oben den "Pfad zur öffentlichen Schlüsseldatei" 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 Erweiterung .pub 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.

5
vpathak

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

So geht's:

  1. Laden Sie PuttyGen herunter und generieren Sie Ihr Schlüsselpaar (wenn Sie kein Schlüsselpaar bereit 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 private Schlüsseldatei (.ppk), indem Sie auf die Schaltfläche "Laden" klicken. Andernfalls überspringen Sie diesen Schritt
  3. Wählen Sie im Menü "Conversions" die Option OpenSSH-Schlüssel exportieren und speichern Sie sie 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 Neustart des SSH-Dämons abgelegt haben).
2
Dylan B

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-----

löste mein Problem.

2
user50849

Ich bin heute gerade darauf gestoßen, als ich einige Git-Tagging-Utils 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 folgendermaßen 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 am Ende Ihres privaten Schlüssels eine neue Zeile haben.

2
Robert J

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

0
Richard

Mein Problem war auf die Codierung zurückzuführen. In VSCode war die Codierung der Datei (die ich mit Out-File In PowerShell erstellt hatte) UTF-16LE. Als ich zu UTF-8 Wechselte, war der Schlüssel gültig.

0
john

Ich hatte dieses Problem, weil ich einen Schlüssel in ~/.ssh hatte, der tatsächlich 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 angegeben hatte. Es schlägt einfach fehl, weil es nur 5 Schlüssel versuchen kann, denke ich, und mich dann mit diesem Fehler zurückgelassen hat, der legitim war, nur für die falsche Identitätsdatei. Die Lösung bestand darin, nur IdentitiesOnly yes in meiner ~/.ssh/config.

0
Elijah Lynn

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

0
Elijah Lynn

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

(Dies geschah mir 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 dass CAPS LOCK deaktiviert ist.

0