Ssh
將 OpenSSH 公鑰轉換為帶有空格和列的 HEX 格式的 PKCS#1
我有 OpenSSH 格式的 SSH 公鑰(在我的 Mac 上生成),如下所示:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXaDj1YGcvKIhUIgmjV/Mjz8so5O2tdxG9gVlTwCxuFLjcUOsciB5R+hZ28GZtb9tb0p4ZSGd8bLcUnI/tqFlVBfRKhfixbvJlDJkzh1eqzqjgCz7Sgd7vo/9pX4FNmajcdt4nsgMI0Q0NLZOWF0M90gTAkcpfCVyt561IIrHK0MpWPqQbp917X8hfRH23sgo8B471FhN6j3ghS18OcAG8LSzCQ5IjJzyqzRRYLpYVdGVyrqNKV0wBOP7dzmZAcpit4XCtRIESKdQGzPCMcctgh2doBPwFyP1AUcTCrq5skZgik6RjaJAlCm3rxPs0bJDGInWEg0lTnTc7hEmV4tf3 nameofthekey
我需要使用以下格式轉換為十六進制的 PKCS#1:
30818602 8180E6B0 25E45C19 54F3DBAD D41C79BF 2054F2C9 33775177 6F60F3B0 9654B03D 02A6A30F B04A5D59 E9BA7846 32059FB6 1157F39B 2C60C890 9B92EFA6 CD566AE2 41621AEB 7BC30538 7065BD5A E3D2380E F1ABF4BF A8EFB0C9 E9BB06E0 8A060E0E 2022047C 009BA3F6 47257E1B B3498941 3C1281BA C5D64786 377B7426 2B5AA315 41C70201 25
並放入我的華為OLT終端進行SSH RSA密鑰訪問。
謝謝你。
我花了一個晚上,我找到了這個解決方案:
OpenSSH 公鑰必須轉換為base64 格式的 PKCS#1 PEM 編碼的公鑰:
ssh-keygen -f id_rsa.pub -e -m pem
接下來,使用base64 到 HEX轉換器,如下所示:http ://tomeko.net/online_tools/base64.php?lang=en
輸入沒有開始和結束標記的字元串
-----BEGIN RSA PUBLIC KEY----- -----END RSA PUBLIC KEY-----
到轉換器並點擊轉換
例如:
您將其輸入轉換器:
MIIBCgKCAQEA12g49WBnLyiIVCIJo1fzI8/LKOTtrXcRvYFZU8AsbhS43FDrHIgeUfh2dvBmbW/bW9KeGUhnfGy3FJyP7ahZVQX0SoX4sW7yZQyZM4dXqs6o4As+0oHe76P/aV+BTZmo3HbeJ7IDCNENDS2TMhdDPdIEwJHKXwlcreetSCKxytDKVj6kG6fde1/IX0R9t7IKPAeO9RYTeo94IUtfDnABvC0swkxSIyc8qs0UWC6WFXRlcq6jSldMATj+3c5mQHKYreFwrUSBEinUBszwjHHLYIdnaAT8Bcj9QFHEwS6ubJGYIpOkY2iQJQpt68T7NGyQxiJ1hIGJU503O4RJleLV9wIDAQAB
你得到這個:
3082010A0282010100D76838F560672F2888542209A357F323CFCB28E4EDAD7711BD815953C02C6E14B8DC50EB1C881E51F87676F0666D6FDB5BD29E1948677C6CB7149C8FEDA8595505F45F85F8B16EF2650C99338757AACEA8E00B3ED281DEEFA3FF695F814D99A8DC76DE27B20308D12D0D2D939617433DD204C091CA5F095CADE7AD4822B1CAE0CA563EA41BA7DD7B5FC85F447DB7B20A3C078EF516137A8F78214B5F0E7001BC2D2CC2439223273CAACD14582E9615746572AEA34A574C0138FEDDCE66407298ADE170AD44811229D406CCF08C71CB6087676804FC05C8FD4051C4C2AEAE6C91982293A4636890250A6DEBC4FB346C90C62275848349539D373B844978E2D7F70203010001
對於華為 GPON OLT 或交換機或瞻博網路等網路設備,您必須很少編輯輸出到 6 個列中的 8 個字元組,如下所示:(通過文本編輯器添加經典空格和換行符)
3082010A 02820101 00D76838 F560672F 28885422 09A357F3 23CFCB28 E4EDAD77 11BD8159 53C02C6E 14B8DC50 EB1C881E 51F87676 F0666D6F DB5BD29E 1948677C 6CB7149C 8FEDA859 5505F44A 85F8B36E F2650C99 338757AA CEA8E00B 3ED281DF EFA3FF69 5F814D99 A8DC76DE 27B20308 D10D0D2D 93961743 3DD204C0 91CA5F09 5CADE7AD 4822B1CA D0CA563E B41BA7DD 7B5FC85F 447DB7B2 0A3C078E F516137A 8F78214B 5F0E7001 BC2D2CC2 43922327 3CAACD14 582E9615 746572AE A34A574C 0138FEDD CE664072 98FAE170 AD448112 29D416CC F08C71CB 60876768 04FC05C8 FD4051C4 C2AEAE6C 91982293 A4636890 250A6DEB C4FB346C 90C62275 84834953 9D373B84 4995E2D7 F7020301 0001
現在您可以將此 RSA 公鑰放入控制台,保存,將 RSA 密鑰分配給使用者,您現在可以使用您的 SSH 私鑰登錄。
該格式與ASN.1
30
一致,其中包含長度為 0x86 ( )的序列 ( ),80 86
其中包含02
長度為 0x80 (81 80
) 的整數 ( ),後跟02
長度為 1 ( ) 的整數 (01
)。這是一個似是而非的 RSA 公鑰。假設 SSH 密鑰在一個文件
id_rsa.pub
中,您可以使用ssh-keygen -f /dev/stdin -e -m PKCS8 -f id_rsa.pub | openssl pkey -pubin -outform DER | od -t x1 -An -w4 | tr 'a-f' 'A-F' | tr -d ' ' | fmt -w 54
(為什麼這麼複雜?因為。)