it-swarm.com.de

key_load_public: ungültiges Format

Ich habe PuTTY Key Generator verwendet, um einen 4096-Bit-RSA-2-Schlüssel mit einer Passphrase zu generieren.

Ich speichere die PPK-Datei und einen öffentlichen Schlüssel im OpenSSL-Format. Der öffentliche Schlüssel im PuTTY-Format funktioniert nicht.

In jedem Fall lautet mein Fehler wie folgt:

$ ssh -T [email protected]
key_load_public: invalid format
Enter passphrase for key '/c/Users/Dan/.ssh/id_rsa':
Hi Dan! You've successfully authenticated, but GitHub does not provide Shell access.

Was ist das Problem?

Ich benutze Pageant, um die Schlüssel zu laden, und ich benutze Git Bash, um die SSH-Verbindung auszuprobieren. Ich habe den Schlüssel auch in GitHub geladen, nicht sicher, was ich falsch mache.

Ich habe versucht, eine neue Zeile hinzuzufügen und keine neue Zeile in GitHub hinzuzufügen

43
JordanGS

Wie Roland in ihrer Antwort erwähnt, ist dies eine Warnung, dass ssh-agent Das Format des öffentlichen Schlüssels nicht versteht und der öffentliche Schlüssel auch dann nicht lokal verwendet wird.

Ich kann jedoch auch erläutern und beantworten, warum die Warnung vorhanden ist. Es läuft einfach darauf hinaus, dass der PuTTY Key Generator zwei verschiedene öffentliche Schlüsselformate generiert, je nachdem, was Sie im Programm tun.

Hinweis: In meiner Erklärung werden die Schlüsseldateien, die ich verwenden/generieren werde, mit id_rsa Und den entsprechenden Erweiterungen benannt. Zum bequemen Kopieren und Einfügen wird als übergeordneter Ordner der Schlüssel ~/.ssh/ Angenommen. Passen Sie diese Details nach Bedarf an.

Die Formate

Link zur entsprechenden PuTTY-Dokumentation

SSH-2

Wenn Sie speichern einen Schlüssel mit PuTTY Key Generator über die Schaltfläche "Save public key" speichern, wird dieser in dem durch RFC 4716 definierten Format gespeichert.

Beispiel:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "github-example-key"
AAAAB3NzaC1yc2EAAAABJQAAAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYF
i2fSBrsGcmqeb5EwgnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcp
pY0fhRSGtWL5fT8DGm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3
oMrongEjGw7sDP48ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEA
ip3mL20+qHNsHfW8hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9
tBjh7cOyuU/c4M4D6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElw==
---- END SSH2 PUBLIC KEY ----

OpenSSH

Entgegen der landläufigen Meinung wird dieses Format vom Generator nicht gespeichert. Es wird jedoch generiert und im Textfeld mit dem Titel "Öffentlicher Schlüssel zum Einfügen in die OpenSSH-Datei" authorized_keys "angezeigt. Um es als Datei zu speichern, müssen Sie es manuell aus dem Textfeld kopieren und in eine neue Textdatei einfügen.

Für den oben gezeigten Schlüssel wäre dies:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5EwgnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8DGm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElw== github-example-key

Das Format des Schlüssels ist einfach ssh-rsa <signature> <comment> Und kann durch Neuanordnen der SSH-2-formatierten Datei erstellt werden.

Öffentliche Schlüssel neu generieren

Wenn Sie ssh-agent Verwenden, haben Sie wahrscheinlich auch Zugriff auf ssh-keygen.

Wenn Sie über Ihren OpenSSH Private Key (id_rsa - Datei) verfügen, können Sie die OpenSSH Public Key-Datei folgendermaßen generieren:

ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub

Wenn Sie nur den privaten PuTTY-Schlüssel (id_rsa.ppk - Datei) haben, müssen Sie diesen zuerst konvertieren.

  1. Öffnen Sie den PuTTY Key Generator
  2. Klicken Sie in der Menüleiste auf "Datei"> "Privaten Schlüssel laden".
  3. Wählen Sie Ihre id_rsa.ppk - Datei aus
  4. Klicken Sie in der Menüleiste auf "Konvertierungen"> "OpenSSH-Schlüssel exportieren".
  5. Speichern Sie die Datei als id_rsa (Ohne Erweiterung)

Nachdem Sie über einen OpenSSH Private Key verfügen, können Sie mit dem Tool ssh-keygen Wie oben beschrieben Änderungen am Schlüssel vornehmen.

Bonus: Das PKCS # 1 PEM-codierte Public Key Format

Um ehrlich zu sein, ich weiß nicht, wofür dieser Schlüssel verwendet wird, da ich ihn nicht gebraucht habe. Aber ich habe es in meinen Notizen, die ich im Laufe der Jahre zusammengetragen habe, und ich werde es hier zum Wohle der Gesundheit einfügen. Die Datei sieht folgendermaßen aus:

-----BEGIN RSA PUBLIC KEY-----
MIIBCAKCAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5Ew
gnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8D
Gm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48
ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8
hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D
6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElwIBJQ==
-----END RSA PUBLIC KEY-----

Diese Datei kann mit einem privaten OpenSSH-Schlüssel (wie oben unter "Generieren öffentlicher Schlüssel" generiert) generiert werden, indem Folgendes verwendet wird:

ssh-keygen -f ~/.ssh/id_rsa -y -e -m pem > ~/.ssh/id_rsa.pem

Alternativ können Sie einen öffentlichen OpenSSH-Schlüssel verwenden, indem Sie Folgendes verwenden:

ssh-keygen -f ~/.ssh/id_rsa.pub -e -m pem > ~/.ssh/id_rsa.pem

Verweise:

116
samthecodingman

Es scheint, dass ssh Ihren öffentlichen Schlüssel nicht lesen kann. Das ist aber egal.

Sie laden Ihren öffentlichen Schlüssel zu github hoch, authentifizieren sich jedoch mit Ihrem privaten Schlüssel . Siehe z. den FILES-Abschnitt in ssh(1).

4
Roland Smith

Wenn Sie Ihren öffentlichen Schlüssel mit der Zwischenablage kopieren und einfügen, kann es vorkommen, dass die Zeichenfolge des öffentlichen Schlüssels beschädigt wird, die eine neue Zeile enthält.

Stellen Sie sicher, dass Ihre öffentliche Schlüsselzeichenfolge aus einer Zeile besteht.

3
Hojin Choi

Anstatt den privaten Schlüssel direkt zu speichern, gehen Sie zu Konvertierungen und exportieren Sie den SSh-Schlüssel .. __

1
Jignesh Rawal

Ich hatte dieselbe Warnung. Es war ein sehr alter Schlüssel. Ich habe einen Schlüssel auf dem aktuellen OpenSSH 7 neu generiert, und der Fehler war verschwunden. 

0
arberg