blacksun
Goto Top

Private RSA Key in OpenSSH-Key konvertieren - geht das?

Hallo,

ich habe mit easy-RSA eine PKI mit selbstsignierter CA aufgebaut.
Nun möchte ich nicht eine komplett neue PKI für SSH pflegen, sondern stattdessen die Keys und Certifikate auch als Basis für OpenSSH nutzen.

Kann ich einen mit easy-rsa erzeugten private Key für einen Client in einen private-key konvertieren wie ihn SSH benötigt?
Wenn ja, wie mache ich das am besten?

Vielen Dank schonmal.

Content-Key: 600858

Url: https://administrator.de/contentid/600858

Printed on: April 19, 2024 at 18:04 o'clock

Member: erikro
erikro Aug 31, 2020 at 16:19:07 (UTC)
Goto Top
Moin,

ich kenne easy-RSA nicht. Aber wenn das Schlüsselpaare im RSA-Format erzeugt, dann kann man die imho einfach so auch für ssh nehmen.

Liebe Grüße

Erik
Member: aqui
aqui Sep 01, 2020 updated at 06:42:16 (UTC)
Goto Top
ich kenne easy-RSA nicht.
Sollte man eigentlich... Ist in jedem OpenVPN Package immer mit dabei. Guckst du HIER ! face-wink

Entweder das oder du kannst sie mit OpenSSL einfach konvertieren.
Member: blacksun
blacksun Sep 01, 2020 at 16:53:12 (UTC)
Goto Top
Zitat von @aqui:
Entweder das oder du kannst sie mit OpenSSL einfach konvertieren.

wie lautet denn die Syntax?
Bei den Ergebnissen einer Google-Recherche ging es immer nur darum vom OpenSSL-Format in RSA.
Ich benötige es umgekehrt.
Den öffentlichen Key habe ich schon aus dem RSA-Cert herausbekommen.
Jetzt benötige ich noch den Private-Key in OpenSSL konvertiert.
Member: aqui
aqui Sep 01, 2020 at 17:00:21 (UTC)
Goto Top
Member: blacksun
blacksun Sep 02, 2020 at 10:28:39 (UTC)
Goto Top
da geht es aber um OpenVPN.
darum geht es mir nicht. Da ist alles fertig eingerichtet und funktioniert.

Ich möchte aus dem private.key oder meinetwegen private.pem einen OpenSSH-Privatekey machen.
Hier hat jemand anderer genau das auch gefragt:
https://stackoverflow.com/questions/61730432/how-to-convert-rsa-private- ...
Mitglied: 145916
Solution 145916 Sep 02, 2020 updated at 11:25:57 (UTC)
Goto Top
openssl rsa -in /path/private.key -out /path/private_rsa.key
Fertig.

Das wandelt einen PEM private Key in einen RSA Key (OpenSSH kompatibel) um mit folgendem Header
-----BEGIN RSA PRIVATE KEY-----
und den kann man mit SSH auch problemlos nutzen. Normale PEM Keys gehen aber auch out of the box. Eine Umwandlung ist also in der Regel nicht nötig

Dann kannst du den Key mit ssh-add /path/private_rsa.key dem ssh agent hinzufügen und dich damit per SSH connecten.
Member: blacksun
blacksun Sep 03, 2020 updated at 13:54:38 (UTC)
Goto Top
Zitat von @145916:

> openssl rsa -in /path/private.key -out /path/private_rsa.key
> 
Fertig.

genau das war das was ich benötigt habe.
Vielen Dank.

Die Umwandlung in's Putty-Format hat auch funktioniert.

Wenn man ssh-keygen noch über den key laufen lässt, z. B. ssh-keygen -p -f <dateiname>
dann steht im Beginn und Endstring auch ein
OPENSSH PRIVATE KEY

Zitat von @145916:
und den kann man mit SSH auch problemlos nutzen. Normale PEM Keys gehen aber auch out of the box. Eine Umwandlung ist also in der Regel nicht nötig

das habe ich nicht getestet da ich in wirklich jeder Anleitung gelesen habe dass man Keys im OpenSSH-Format benötigt.

Zitat von @145916:
Dann kannst du den Key mit ssh-add /path/private_rsa.key dem ssh agent hinzufügen und dich damit per SSH connecten.

Danke für den Tipp. Weißt Du wo der Agent die privaten Keys dann speichert?

2 Fragen noch zu SSH:
- könnte ich die authorized_keys Datei aus dem Homedir auch an einen Ort verlegen so dass die für alle User-IDs genutzt werden kann?
- schützen mich der Key-Login bzw. die Signaturmeldung am Client vor Man-in-the-Middle angriffen bzw. das Aufbrechen der Verschlüsselung?
Mitglied: 145916
145916 Sep 03, 2020 updated at 14:07:56 (UTC)
Goto Top
Zitat von @blacksun:
das habe ich nicht getestet da ich in wirklich jeder Anleitung gelesen habe dass man Keys im OpenSSH-Format benötigt.
Funktioniert aber face-smile.

Zitat von @145916:
Dann kannst du den Key mit ssh-add /path/private_rsa.key dem ssh agent hinzufügen und dich damit per SSH connecten.

Danke für den Tipp. Weißt Du wo der Agent die privaten Keys dann speichert?
Der agent lädt Keys nur in den RAM, speichern musst du sie schon selbst. Im entsprechenden Verzeichnis abgelegt lädt der Agent die Identität automatisch.
Lesen hilft wie immer gegen Kopfschmerzen face-wink https://linux.die.net/man/1/ssh-add

2 Fragen noch zu SSH:
- könnte ich die authorized_keys Datei aus dem Homedir auch an einen Ort verlegen so dass die für alle User-IDs genutzt werden kann?
Ja, in der sshd_config in die enstprechende Direktive AuthorizedKeysFile den Pfad eintragen
https://linux.die.net/man/5/sshd_config

- schützen mich der Key-Login bzw. die Signaturmeldung am Client vor Man-in-the-Middle angriffen bzw. das Aufbrechen der Verschlüsselung?
Nur wenn du ausschließlich deine eigenen Hostkeys bei Verbindungen akzeptierst.
Member: blacksun
blacksun Sep 03, 2020 at 14:54:08 (UTC)
Goto Top
Zitat von @145916:
Der agent lädt Keys nur in den RAM, speichern musst du sie schon selbst. Im entsprechenden Verzeichnis abgelegt lädt der Agent die Identität automatisch.
Lesen hilft wie immer gegen Kopfschmerzen face-wink https://linux.die.net/man/1/ssh-add

alles klar.
Das mit dem RAM steht aber nicht in der Man-Page

Ja, in der sshd_config in die enstprechende Direktive AuthorizedKeysFile den Pfad eintragen
https://linux.die.net/man/5/sshd_config

habe ich gelesen und gesehen.
Da die Beispiele dort aber ausschließlich Homedirs zeigen war mir nicht klar ob es zwingend Homedirs sein müssen.
Damit ich einen passenden Ort für AuthorizedKeysFile suchen kann, muss der User, mit dem der Login erfolgt, auf das File zugreifen können, oder der User unter dem der SSHd läuft?

Nur wenn du ausschließlich deine eigenen Hostkeys bei Verbindungen akzeptierst.
jep, genau so habe ich das vor.
bei stunnel kann man das mit VerifyChain schön automatisieren.
Bei ssh bleibt nur der manuelle Abgleich der Signatur, oder?
Mitglied: 145916
145916 Sep 03, 2020 updated at 16:28:26 (UTC)
Goto Top
Zitat von @blacksun:
Da die Beispiele dort aber ausschließlich Homedirs zeigen war mir nicht klar ob es zwingend Homedirs sein müssen.
Nein müssen es nicht.
Damit ich einen passenden Ort für AuthorizedKeysFile suchen kann, muss der User, mit dem der Login erfolgt, auf das File zugreifen können, oder der User unter dem der SSHd läuft?
Der Account unter dem der sshd Daemon läuft muss Leserechte auf das File haben, das reicht.
Bei ssh bleibt nur der manuelle Abgleich der Signatur, oder?
Nein, der SSH Client verbindet sich ohne weitere Parameterangabe von selbst nur mit den Hosts dessen Public Key du schon in der ~/.ssh/known_hosts auf dem Client abgespeichert hast. Ansonsten verweigert er die Verbindung, bzw. fragt danach.

Das Gegenteilige für den Hostkey-Check erreicht man über das setzen der Option
-o "StrictHostKeyChecking no"
bei einer Client-Verbindung werden wenn man das mal braucht. Setzt man diese Option verbindet sich der SSH Client mit jedem Server ohne Check des HostKeys.
Member: blacksun
blacksun Sep 03, 2020 at 15:43:09 (UTC)
Goto Top
Zitat von @145916:
Nein, der SSH Client verbindet sich ohne weitere Parameterangabe von selbst nur mit den Hosts dessen Public Key du schon in der ~/.ssh/known_hosts auf dem Client abgespeichert hast. Ansonsten verweigert er die Verbindung.

Das Gegenteilige für den Hostkey-Check erreicht man über das setzen der Option
-o "StrictHostKeyChecking no"
bei einer Client-Verbindung werden wenn man das mal braucht. Setzt man diese Option verbindet sich der SSH Client mit jedem Server ohne Check des HostKeys.

und schon wieder habe ich was gelernt.
gut dass du es erwähnt hast.
unter Raspian steht der Parameter als default auf ask