CUBE SUGAR CONTAINER

技術系のこと書きます。

OpenSSH で過去に作った鍵の種類や長さを確かめる

今回は 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 追記

フィンガープリントを計算する際のハッシュ形式と署名で用いられるハッシュ形式を混同している点をご指摘いただいたため修正しました。 ありがとうございます。