Wie installiere ich einen von PuTTYgen generierten privaten SSH-Schlüssel?

50

Ich richte meinen Linux-Server so ein, dass Verbindungen von meinem Heim-PC akzeptiert werden, indem ich den von PuTTYgen generierten öffentlichen Schlüssel zur authorized_keysDatei hinzufüge .

Jetzt versuche ich, eine Verbindung zu demselben Computer herzustellen, diesmal jedoch von einem anderen Ubuntu-Computer. Ich muss denselben privaten Schlüssel verwenden (aus einem seltsamen Grund, frag nicht ..) und weiß nicht genau, wie ich ihn auf meinem Ubuntu-Client installieren soll.

Muss ich es in ein anderes Format konvertieren?

Assaf Lavie
quelle

Antworten:

25

Ich bin nicht sicher, ob Ihr privater Schlüssel in Ubuntu funktioniert, aber es ist einen Versuch wert. Kopieren Sie einfach die Schlüssel, /home/yourName/.ssh/um den privaten Schlüssel als id_rsaund den öffentlichen Schlüssel als zu bezeichnen id_rsa.pub.

Wenn dies nicht funktioniert, können Sie mit ssh ein eigenes Schlüsselpaar erstellen ssh-keygenund den neuen öffentlichen Schlüssel auf den Server kopieren

ssh -i ~/.ssh/id_rsa_ubuntu.pub <hostName>

Ich habe noch nicht damit gespielt, aber ich habe gehört, dass ssh-agent auch zum Verwalten von ssh-Schlüsseln verwendet werden kann.

theTuxRacer
quelle
3
Dies funktioniert in Ubuntu. Stellen Sie jedoch sicher, dass Sie einen vorhandenen id_rsa-Schlüssel nicht überschreiben, wenn Sie bereits einen haben (indem Sie den neuen Schlüssel darüber kopieren), es sei denn, Sie wissen, dass Sie den alten nicht verwenden.
David Oneill
5
In dieser Antwort fehlen Informationen, wie Sie die id_rsaDatei erhalten (durch Konvertieren des Schlüssels in PuTTYgen)
Martin Prikryl
38

Zufällig musste ich das einfach tun. Sie müssen die Schlüssel in das OpenSSH-Format konvertieren. Der Befehl dafür lautet:

ssh-keygen -i -f puttygen_key > openssh_key

dann kannst du den inhalt von openssh_keyin .ssh/authorized_keysgenauso kopieren wie mit einem normalen ssh schlüssel.

Die -iOption ist diejenige, die angibt ssh-keygen, die Konvertierung durchzuführen. Die -fOption gibt an, wo sich der zu konvertierende Schlüssel befindet.

Dies funktioniert für unverschlüsselte Schlüssel. Der öffentliche Schlüssel ist unverschlüsselt, der private wahrscheinlich verschlüsselt. Ich bin mir nicht sicher, ob es eine Möglichkeit gibt, den privaten Schlüssel zu entschlüsseln, zu konvertieren und dann erneut zu verschlüsseln. Es kann durchaus einfacher sein, neue Schlüssel zu verwenden, wie die andere Antwort nahelegt (und ich würde empfehlen, diese zu verwenden, ssh-agentobwohl sie zur aktuellen Ausgabe orthogonal sind).

Loop Space
quelle
1
Diese Antwort löst mein Problem. Ich musste den Schlüssel konvertieren. Vielen Dank
leticia
1
Dies löst nur einen Teil des Problems durch Konvertieren des öffentlichen Schlüssels. Ich habe die Antwort von @ user18617 verwendet, um auch den privaten Schlüssel zu konvertieren.
31.
@ ÉdouardLopez puttygen_keysollte Ihr öffentlicher Schlüssel sein, nicht der private Schlüssel (* .ppk).
Endolith
28

Andrew Stacey erklärte, wie man die Schlüssel unter Linux in das OpenSSH-Format konvertiert.

Wenn Sie dasselbe unter Windows tun möchten, gehen Sie folgendermaßen vor:

  1. Starten Sie PuTTYGen.
  2. Klicken Sie auf "Laden".
  3. Wählen Sie Ihren privaten Schlüssel und geben Sie die Passphrase ein.
  4. Wählen Sie im Menü "Konvertierungen" die Option "OpenSSH-Schlüssel exportieren".
  5. Wählen Sie den Zieldateinamen.
Heimbürger
quelle
1
Ich wollte nur sagen, dass dies auf meinem Mac OS X funktioniert, obwohl ich weiß, dass dies ein Ubuntu-Abschnitt ist. Ich habe meinen generierten privaten Schlüssel in Windows wie oben beschrieben konvertiert und ihn dann auf meinem Mac nach ~ / .ssh / id_rsa kopiert. chmod id_rsa 600, um Mac davon abzuhalten, sich darüber zu beschweren.
Richard
24

So können Sie Ihre Putty-Schlüsselpaare in Ubuntu als OpenSSH-Schlüssel wiederverwenden:

apt-get install putty-tools #Install Putty tools in Linux
cd /my-putty-keys
puttygen mykey-sec.ppk ‐O private‐openssh ‐o my‐openssh‐key.sec
ssh-keygen -i -f mykey-pub.ppk > my-openssh-key.pub

Da der Zweck von Schritt 4 darin besteht, Ihren öffentlichen Schlüssel zu * ~. / Ssh / authorized_keys * hinzuzufügen, können Sie Ihren geheimen Putty-Schlüssel wie folgt verwenden, anstatt 4 als Zwischenschritt auszuführen:

puttygen ‐L mykey-sec.ppk >> $HOME/.ssh/authorized_keys
user18617
quelle
1
zu Schritt 4: Wenn der Name des privaten Schlüssels mykey-sec.ppk lautet, lautet der Name der Quelldatei in diesem Fall normalerweise mykey-sec.pub.
Kinjal Dixit
2
Die Benennung eines öffentlichen Schlüssels (vermutlich im RFC 4716-Format) mykey-pub.ppkist ziemlich verwirrend, da die .ppkDatei ein völlig anderes Format hat und für Schlüsselpaare (nicht nur für öffentliche Schlüssel) verwendet wird.
Martin Prikryl
Diese letzte Puttygen-Zeile funktionierte perfekt für mich, nachdem ich Putty-Tools auf Debian 9 installiert hatte. Die anderen Zeilen und Antworten hier funktionierten nicht.
Tim
Seltsamerweise bekam ich puttygen: unknown output type `private‐openssh'und puttygen: cannot handle more than one input fileso kopierte ich die genauen Zeichen aus dem Quellcode und benannte meinen öffentlichen Schlüssel in etwas völlig anderes um
CPHPython
Wenn Sie als Heads-Up versuchen, die Befehle in dieser Antwort auszuführen und "puttygen: Kann nicht mehr als eine Eingabedatei verarbeiten" erhalten, liegt dies wahrscheinlich daran, dass das Bindestrich-Zeichen in "private-openssh" nicht als tatsächlicher ASCII-Bindestrich eingefügt wird Puttygen erkennt es also nicht. Geben Sie stattdessen das Wort selbst ein und es sollte funktionieren.
Matt Styles
9

PuTTY / PuTTYgen verwendet ein eigenes proprietäres Format für das Schlüsselpaar. Es funktioniert nicht unter Linux, wo das OpenSSH-Format der Schlüssel vorherrscht.

  • In PuTTYgen können Sie einen öffentlichen Schlüssel im von der OpenSSH- authorized_keysDatei verwendeten Format direkt anzeigen (und kopieren + einfügen) .

  • Mit der Schaltfläche Save public key können Sie den öffentlichen Schlüssel im .pubFormat (RFC 4716) speichern . Unter Linux heißt die Datei normalerweise id_rsa.pub(oder id_dsa.pub). Aber das wird normalerweise nicht benötigt.

  • Verwenden Sie den Befehl Konvertierungen> OpenSSH-Schlüssel exportieren, um den privaten Schlüssel im OpenSSH-Format zu exportieren . Unter Linux heißt die Datei normalerweise id_rsa(oder id_dsa) und wird in einem .sshOrdner gespeichert .

Siehe das offizielle Using PuTTYgen, den PuTTY-Schlüsselgenerator .

Sie können auch eine Linux-Version von PuTTYgen verwenden, um die Konvertierung durchzuführen. Die Linux-Version ist im Gegensatz zur Windows-Version eine Befehlszeile.

puttygen mykey.ppk ‐O private‐openssh ‐o id_rsa

Siehe Linux- puttygenManpage .

Martin Prikryl
quelle
2

Ich habe noch eine klare Lösung gefunden.

Wenn Sie puttygeneinen Schlüssel erstellen, navigieren Sie zum Hauptmenü - Konvertierung und klicken Sie auf openssh-Schlüssel exportieren

Der Dateiinhalt beginnt und endet mit

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

-----END RSA PRIVATE KEY-----
  • für root-Benutzer Kopieren Sie diese Schlüsseldatei nach /root/.ssh/as id_rsaoderid_dsa

  • für andere Benutzer Kopieren Sie diese Schlüsseldatei nach /home/user/.ssh/as id_rsaoderid_dsa

Hinweis :

  1. Keine Notwendigkeit zu bearbeiten authorized_keys.
  2. Ich benutze Amazon Linux
  3. Dateiberechtigung 0600
P-Kumar
quelle
1

* * Seien Sie vorsichtig und vergewissern Sie sich, dass Sie über die Konsole Zugriff auf die Box haben. Wenn Sie dies nicht richtig machen, können Sie erst dann wieder sshen, wenn Sie es über die Konsole reparieren.

Der Prozess ist viel einfacher als Sie denken. Laden Sie das in puttygen erzeugte öffentliche / private Schlüsselpaar erneut. In puttygen sehen Sie in der Mitte des Bildschirms ein Fenster mit der Aufschrift "Öffentlicher Schlüssel zum Einfügen in die Datei Open SSH authorized_keys:".

Markieren Sie den gesamten Inhalt des Felds und drücken Sie Strg-C, um es zu kopieren.

SSH in deine Linux-Box und füge es in die Datei "/home/username/.ssh/authorized_keys" ein. Ich bevorzuge Nano und klicke einfach mit der rechten Maustaste, um es einzufügen. Stelle sicher, dass alles in einer Zeile bleibt.

Ändern Sie die Datei / etc / sshd_config nach Bedarf und starten Sie den sshd-Dienst neu: "service ssh restart"

Wenn Sie ein Beispiel für eine sshd_config-Datei benötigen, lassen Sie es mich wissen und ich kann meine posten.

Ich habe dies auf Ubuntu 8.04, 10.04 und 12.04 LTS Server gemacht und es funktioniert reibungslos.

ErnestA
quelle
0

Ich bin nicht sicher, ob dieser Thread noch aktiv ist, aber ich bin auf ein ähnliches Problem mit der Windows 10-Jubiläumsversion gestoßen, die jetzt den Ubuntu-Kernel unterstützt. Ich benutze Putty früher, um mich mit einem Linux-Rechner zu verbinden. Verwenden Sie zum Generieren von id_rsa im Linux-Format puttykeygen und laden Sie Ihren privaten Schlüssel für putty. Klicken Sie dann auf conversion und wählen Sie die zweite Option aus.

Putty KeyGenerator-Konvertierungen

Öffnen Sie die neu generierte Schlüsseldatei und kopieren Sie den gesamten Inhalt. Stellen Sie sicher, dass der Inhalt mit Folgendem beginnt: ----- BEGIN RSA PRIVATE KEY ----- und endet mit ----- END RSA PRIVATE KEY -----

vi id_rsa in ihrem ~ / .ssh verzeichnis und fügen sie den kopierten inhalt ein. dies ist erforderlich, da linux sonst den inhalt der datei nicht versteht.

Das ist alles, versuchen Sie es mit ssh auf dem Remote-Server, es sollte funktionieren.

binisch
quelle