今回は OpenSSH で過去に作った鍵の種類や長さを確認する方法について。
結論から先に述べると ssh-keygen(1) の -l
オプションと -f
オプションを組み合わせれば良い。
使った環境は次のとおり。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS" $ uname -srm Linux 5.15.0-58-generic x86_64 $ ssh -V OpenSSH_8.9p1 Ubuntu-3ubuntu0.1, OpenSSL 3.0.2 15 Mar 2022
もくじ
下準備
あらかじめ OpenSSH のクライアントをインストールしておく。
$ sudo apt-get update
$ sudo apt-get -y install openssh-client
動作確認用の公開鍵ペアを生成する
動作確認用に RSA で公開鍵のペアを作っておく。
パスフレーズは空で、鍵の名前は id_rsa
にした。
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa Generating public/private rsa key pair. Your identification has been saved in /home/ubuntu/.ssh/id_rsa Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub The key fingerprint is: SHA256:FPI5/OZLR94xU83YcUQ82sD7k6ckRqh7bL67tGXcL2U ubuntu@jammy The key's randomart image is: +---[RSA 3072]----+ | . . . =+| | + o o ==| | * . * *| | . o. .o o | | S.o.. = .| | .o +oo.BE| | o+.*oo+o| | .o+* o. | | +B+ ..| +----[SHA256]-----+
上記から、どうやら 3072 ビットの RSA で公開鍵ペアが生成されたようだ。
鍵の種類や長さを確認する
鍵の種類や長さを確認するには ssh-keygen(1) の -l
オプションと -f
オプションを組み合わせて使う。
-l
オプションを使うことで公開鍵のフィンガープリントと付随する情報を出力するモードになる。
-f
オプションでは鍵のファイルパスを指定する。
$ ssh-keygen -l -f ~/.ssh/id_rsa 3072 SHA256:FPI5/OZLR94xU83YcUQ82sD7k6ckRqh7bL67tGXcL2U ubuntu@jammy (RSA)
上記から、この鍵では 3072 ビットの RSA を使っていることが確認できる。
上記では秘密鍵の方を指定していたけど、もちろん公開鍵の方を指定しても問題ない。
$ ssh-keygen -l -f ~/.ssh/id_rsa.pub 3072 SHA256:FPI5/OZLR94xU83YcUQ82sD7k6ckRqh7bL67tGXcL2U ubuntu@jammy (RSA)
別の鍵の種類でも確認する
念の為、別の鍵の種類でも試しておく。 ここでは ED25519 を使った。
$ ssh-keygen -t ed25519 -P '' -f ~/.ssh/id_ed25519 Generating public/private ed25519 key pair. Your identification has been saved in /home/ubuntu/.ssh/id_ed25519 Your public key has been saved in /home/ubuntu/.ssh/id_ed25519.pub The key fingerprint is: SHA256:pmGTVjlzXSv1vJLpwNiRpCF4Q62hyXpys3qPWyrE2lM ubuntu@jammy The key's randomart image is: +--[ED25519 256]--+ | oo.. . o | | . +.o+..o + | | . + O..oo . o| | + + ++ ..o .| | . . * S. + + . | | = E = o . | | + = +. . | | . + o+ | | .=+o. | +----[SHA256]-----+
上記から、どうやら 256 ビットの ED25519 の公開鍵ペアが生成されたことが確認できる。 なお、ED25519 はビット長が 256 で固定らしい。
先ほどと同じように ssh-keygen(1) で確認する。
$ ssh-keygen -l -f ~/.ssh/id_ed25519.pub 256 SHA256:pmGTVjlzXSv1vJLpwNiRpCF4Q62hyXpys3qPWyrE2lM ubuntu@jammy (ED25519) $ ssh-keygen -l -f ~/.ssh/id_ed25519 256 SHA256:pmGTVjlzXSv1vJLpwNiRpCF4Q62hyXpys3qPWyrE2lM ubuntu@jammy (ED25519)
ちゃんと 256 ビットの ED25519 であることが確認できた。
いじょう。
2023-01-24 追記
フィンガープリントを計算する際のハッシュ形式と署名で用いられるハッシュ形式を混同している点をご指摘いただいたため修正しました。 ありがとうございます。
SHA256:FPI5/OZ~の最初のSHA256はFingerprintの計算で使われたハッシュ形式であり、鍵自体には関係ありません。RSA鍵自体にはハッシュ形式は無く、生成されたRSA鍵はssh-rsa, rsa-sha2-256, rsa-sha2-512のいずれの署名方式で使えますし、ed25519鍵で使われるハッシュ形式はSHA-512です。
— いわもと こういち (@ttdoda) 2023年1月23日