{"id":22846,"date":"2025-10-06T01:10:49","date_gmt":"2025-10-05T23:10:49","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=22846"},"modified":"2025-10-05T21:46:49","modified_gmt":"2025-10-05T19:46:49","slug":"ssh-key-generierung-und-rfc4716-format-konvertierung-ed25519","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=22846","title":{"rendered":"SSH Key Generierung und RFC4716-Format Konvertierung mit ssh-keygen f\u00fcr Elliptische Kurven (ed25519)"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/10\/rfc-key.jpg\" alt=\"RFC4716-Format Konvertierung\" width=\"1173\" height=\"878\" class=\"aligncenter size-full wp-image-22847\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/10\/rfc-key.jpg 1173w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/10\/rfc-key-300x225.jpg 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/10\/rfc-key-1024x766.jpg 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/10\/rfc-key-768x575.jpg 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>SSH-keygen ist ein essentielles Kommandozeilenwerkzeug zur Erstellung, Verwaltung und Konvertierung von Authentifizierungsschl\u00fcsseln f\u00fcr SSH-Verbindungen. Das Tool ist integraler Bestandteil der OpenSSH-Suite und steht auf nahezu allen modernen Betriebssystemen zur Verf\u00fcgung, einschlie\u00dflich Raspberry Pi, Linux, macOS sowie Windows 10 und 11.<!--more--><\/p>\n<p><strong>Konvertieren eines \u00f6ffentlichen SSH-Schl\u00fcssel vom OpenSSH-Standardformat in das RFC4716-Format<\/strong><\/p>\n<p>Die Konvertierung zwischen beiden Formaten ist vollst\u00e4ndig reversibel und verlustfrei. Der kryptographische Inhalt bleibt identisch \u2013 lediglich die Darstellung \u00e4ndert sich durch Hinzuf\u00fcgen oder Entfernen von Zeilenumbr\u00fcchen bei 70 Zeichen sowie durch Modifikation der Header-Strukturen. Beide Formate repr\u00e4sentieren denselben \u00f6ffentlichen Schl\u00fcssel und bieten identische Sicherheitseigenschaften.<\/p>\n<p>Das RFC4716-Format unterst\u00fctzt zus\u00e4tzliche Header-Felder wie Subject, Comment oder x-command, die im OpenSSH-Standardformat nicht verf\u00fcgbar sind. Diese Header erm\u00f6glichen die Speicherung von Metadaten wie dem Benutzernamen, unter dem der Schl\u00fcssel generiert wurde, oder spezifischen Kommandos, die bei der Authentifizierung ausgef\u00fchrt werden sollen.<\/p>\n<p>Grunds\u00e4tzlich wird RFC4716 immer dann ben\u00f6tigt, wenn Systeme, Weboberfl\u00e4chen oder Dienste explizit dieses standardisierte Format verlangen (wie z.B. OpenMediaVault und Hetzner Storage Boxes), anstatt das verbreitete OpenSSH-Einzeilenformat zu akzeptieren.<\/p>\n<p>RFC4716-Dateien haben keinen standardisierten Dateinamenpr\u00e4fix oder eine fest vorgeschriebene Dateiendung. Der RFC4716-Standard definiert ausschlie\u00dflich den Dateiinhalt, nicht jedoch Namenskonventionen f\u00fcr die Dateien selbst.<\/p>\n<p><strong>Dateinamenskonventionen in der Praxis<\/strong><\/p>\n<p>In der Praxis werden verschiedene Dateiendungen verwendet:<\/p>\n<p>\t<strong>.pub<\/strong>\u00a0 wird h\u00e4ufig verwendet, da es sich um \u00f6ffentliche Schl\u00fcssel handelt<\/p>\n<p>\t<strong>.pem\u00a0<\/strong> wird manchmal genutzt, ist aber technisch ungenau, da PEM ein anderes Format darstellt<\/p>\n<p>\tKeine spezifische Endung ist ebenfalls m\u00f6glich, da der Dateiinhalt durch die Header-Marker eindeutig identifizierbar ist<\/p>\n<p>Die Wahl der Dateiendung ist letztlich eine Konventionsfrage und hat keine funktionalen Auswirkungen auf die Verarbeitung des Schl\u00fcssels durch ssh-keygen oder andere SSH-Tools<\/p>\n<p>Nun aber zu dem Beispiel Ablauf wie oben im Aktivit\u00e4tsdiagramm gezeigt, kann auf dem Raspberry Pi wie folgt laufen:<\/p>\n<pre class=\"lang:default decode:true \" >\r\n\r\nthomaswenzlaff@pi-kleinhirn:~\/ssh-keygen-beispiel $ ssh-keygen -C \"test-email@example.de\" -t ed25519\r\nGenerating public\/private ed25519 key pair.\r\nEnter file in which to save the key (\/home\/thomas\/.ssh\/id_ed25519): .\/id_ed25519\r\nEnter passphrase (empty for no passphrase):\r\nEnter same passphrase again:\r\nYour identification has been saved in .\/id_ed25519\r\nYour public key has been saved in .\/id_ed25519.pub\r\nThe key fingerprint is:\r\nSHA256:bNVwVsBMxNBD4g9CQfpPARFVPNI7rYIA\/ECUb86m0Zk test-email@example.de\r\nThe key's randomart image is:\r\n+--[ED25519 256]--+\r\n|   +o. .B==&amp;Oo.  |\r\n|    =  o o.*X    |\r\n|     =. . =..=   |\r\n|      =o o +o .  |\r\n|     = +S.. .o   |\r\n|    . E..o. .    |\r\n|     +    ..     |\r\n|    .            |\r\n|                 |\r\n+----[SHA256]-----+\r\n\r\nthomaswenzlaff@pi-kleinhirn:~\/ssh-keygen-beispiel $ ls\r\nid_ed25519  id_ed25519.pub\r\n\r\nthomaswenzlaff@pi-kleinhirn:~\/ssh-keygen-beispiel $ cat id_ed25519.pub\r\nssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF3wbVQegwOG3cqyyurqTy85UHQBe7Kd56guPjoEsr9D test-email@example.de\r\n\r\nthomaswenzlaff@pi-kleinhirn:~\/ssh-keygen-beispiel $ cat id_ed25519\r\n-----BEGIN OPENSSH PRIVATE KEY-----\r\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\r\nQyNTUxOQAAACBd8G1UHoMDht3Kssrq6k8vOVB0AXuyneeoLj46BLK\/QwAAAJit48x1rePM\r\ndQAAAAtzc2gtZWQyNTUxOQAAACBd8G1UHoMDht3Kssrq6k8vOVB0AXuyneeoLj46BLK\/Qw\r\nAAAEC3PSq\/jJ1LDLD+45OWWJu\/Zwpp6uu4k03xAay1wPs9A13wbVQegwOG3cqyyurqTy85\r\nUHQBe7Kd56guPjoEsr9DAAAAFXRlc3QtZW1haWxAZXhhbXBsZS5kZQ==\r\n-----END OPENSSH PRIVATE KEY-----\r\n\r\n\r\n\r\nthomaswenzlaff@pi-kleinhirn:~\/ssh-keygen-beispiel $ ssh-keygen -f id_ed25519.pub -e -m RFC4716 &gt; id_ed25519.rfc4716\r\n\r\nthomaswenzlaff@pi-kleinhirn:~\/ssh-keygen-beispiel $ cat id_ed25519.rfc4716\r\n---- BEGIN SSH2 PUBLIC KEY ----\r\nComment: \"256-bit ED25519, converted by thomas@pi-kleinhirn\"\r\nAAAAC3NzaC1lZDI1NTE5AAAAIF3wbVQegwOG3cqyyurqTy85UHQBe7Kd56guPjoEsr9D\r\n---- END SSH2 PUBLIC KEY ----\r\n\r\n\r\n\r\nthomaswenzlaff@pi-kleinhirn:~\/ssh-keygen-beispiel $  ssh-keygen -i -f id_ed25519.rfc4716 &gt; id_ed25519_restored.pub\r\n\r\nthomaswenzlaff@pi-kleinhirn:~\/ssh-keygen-beispiel $ cat id_ed25519_restored.pub\r\nssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF3wbVQegwOG3cqyyurqTy85UHQBe7Kd56guPjoEsr9D\r\n\r\n<\/pre>\n<p>Hier die Befehle als Kopiervorlage:<\/p>\n<pre class=\"lang:default decode:true \" >\r\nmkdir ssh-keygen-beispiel\r\ncd ssh-keygen-beispiel\/\r\nssh-keygen -C \"test-email@example.de\" -t ed25519\r\nls\r\ncat id_ed25519.pub\r\ncat id_ed25519\r\nssh-keygen -f id_ed25519.pub -e -m RFC4716 &gt; id_ed25519.rfc4716\r\ncat id_ed25519.rfc4716\r\nssh-keygen -i -f id_ed25519.rfc4716 > id_ed25519_restored.pub\r\ncat id_ed25519_restored.pub\r\n<\/pre>\n<p>Diagramm als <a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2025\/10\/rfc-key.pdf\">rfc-key.pdf<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SSH-keygen ist ein essentielles Kommandozeilenwerkzeug zur Erstellung, Verwaltung und Konvertierung von Authentifizierungsschl\u00fcsseln f\u00fcr SSH-Verbindungen. Das Tool ist integraler Bestandteil der OpenSSH-Suite und steht auf nahezu allen modernen Betriebssystemen zur Verf\u00fcgung, einschlie\u00dflich Raspberry Pi, Linux, macOS sowie Windows 10 und 11.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,4606,5811],"tags":[6229,132,819,5807,6231,6230,740,6228],"class_list":["post-22846","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-crypto","category-elliptische-kurven","tag-ed","tag-format","tag-key","tag-pem","tag-rfc4716","tag-rfc4716-format","tag-ssh","tag-ssh-keygen"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/22846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=22846"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/22846\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=22846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22846"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}