ssh-keygen
で生成された公開鍵があり、opensslでキー長に関する情報を取得するにはどうすればよいですか。
openssl
では、秘密鍵がファイルid_rsa
にある場合、次のようになります。
openssl rsa -text -noout -in id_rsa
は秘密鍵の内容を出力し、出力の最初の行にはビット単位の係数サイズが含まれます。キーがパスフレーズで保護されている場合は、もちろんそのパスフレーズを入力する必要があります。
公開鍵しかない場合、OpenSSLは直接役立ちません。 @Enigmaは適切なコマンドラインを示します(ssh-keygen -lf id_rsa.pub
を使用)。以下の方法でOpenSSLを使用してこれを行うことができます。
テキストエディタで公開鍵ファイルを開きます。あなたはこのようなものを見つけるでしょう:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDo2xko99piegEDgZCrobfFTvXUTFDbWT
ch4IGk5mk0CelB5RKiCvDeK4yhDLcj8QNumaReuwNKGjAQwdENsIT1UjOdVvZOX2d41/p6J
gOCD1ujjwuHWBzzQvDA5rXdQgsdsrJIfNuYr/+kIIANkGPPIheb2Ar2ccIWh9giwNHDjkXT
JXTVQ5Whc0mGBU/EGdlCD6poG4EzCc0N9zk/DNSMIIZUInySaHhn2f7kmfoh5LRw7RF3c2O
5tCWIptu8u8ydIxz9q5zHxxKS+c7q4nkl9V/tVjZx8sneNZB+O79X1teq7LawiYJyLulUMi
OEoiL1YH1SE1U93bUcOWvpAQ5 [email protected]
マウスで中央のブロブの最初の文字を選択します(afterssh-rsa
);これは Base64 であり、OpenSSLはそれをデコードできます。
echo "AAAAB3NzaC1yc2EAAAADAQABAAABAQDDo2xko99piegEDgZC" | openssl base64 -d | hd
OpenSSLはうるさいです、彼は1行として76文字以下を入力することを要求し、文字数は4の倍数でなければなりません。上記の行はこれを出力します:
00000000 00 00 00 07 73 73 68 2d 72 73 61 00 00 00 03 01 |....ssh-rsa.....|
00000010 00 01 00 00 01 01 00 c3 a3 6c 64 a3 df 69 89 e8 |.........ld..i..|
00000020 04 0e 06 42 |...B|
これはそのように読みます:
00 00 00 07 The length in bytes of the next field
73 73 68 2d 72 73 61 The key type (ASCII encoding of "ssh-rsa")
00 00 00 03 The length in bytes of the public exponent
01 00 01 The public exponent (usually 65537, as here)
00 00 01 01 The length in bytes of the modulus (here, 257)
00 c3 a3... The modulus
したがって、鍵のタイプはRSAであり、そのモジュラスの長さは257bytesですが、最初のバイトの値は "00"であるため、実際の長さは256です。バイト(その最初のバイトは、値が正と見なされるように追加されました。これは、内部エンコードルールがsigned整数を要求するため、最初のビットが符号を定義するためです) 。 256バイトは2048ビットです。
ssh-keygen -lf /etc/ssh/rsa_key.pub
2048 d1:cb:15:df:5d:44:...
2048はキー長です