Linuxコマンド辞典 ssh-keygenコマンド(ネットワーク)

SSHのための認証鍵の作成/管理/変換を行う「ssh-keygen」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

概要・使用方法

書式

$ ssh-keygen [オプション] 

sshで利用する公開鍵認証の鍵ペア作成/管理/変換を行います。SSHプロトコルversion1で利用するRSA鍵、SSHプロトコルversion2で利用するRSA、DSA鍵の作成ができます。DSAやSSHプロトコルversion1は脆弱性が見つかっているために利用しないことを推奨しています。

ssh-keygenを実行すると~/.sshにRSAではidentifyもしくはid_rsa、DSAではid_dsaに秘密鍵を作成します。公開鍵はファイル名末尾に.pubをつけたファイル名になります。暗号アルゴリズムは-tオプションで指定します。また、鍵を任意の文字数のパスフレーズで暗号化できます。後からパスフレーズを-pオプションで変更したり、復号化することもできますが、パスフレーズを忘れてしまった場合は、それを取り戻すことはできません。改めて鍵を生成する必要があります。

オプション

-A存在しないホスト鍵形式を一括して作成する
-eOpenSSHの鍵ファイルを読み込み、RFC4716互換フォーマット鍵を標準出力に出力する
-f ファイル名扱う鍵ファイルを指定する
-i 鍵ファイル名暗号化されていない秘密鍵もしくは公開鍵を読み込んでOpenSSH互換の鍵ファイルを標準出力に出力する
-l公開鍵のフィンガープリントを表示する
-N パスフレーズ新しいパスフレーズを指定する
-p新しい鍵を生成する代わりに指定した秘密鍵のパスフレーズを変更する
-P パスフレーズ現在のパスフレーズを指定する
-t タイプ暗号化タイプを指定する(rsa1/rsa/dsa/ecdsa/ed25519)
-b ビット暗号強度を指定する
-R ホスト名指定したホストの情報をknown_hostsファイルから削除する

公開鍵・秘密鍵のファイル名

暗号アルゴリズム公開鍵ファイル秘密鍵ファイル
RSA(SSHバージョン1)identity.pubidentity
RSA(SSHバージョン2)id_rsa.pubid_rsa
DSAid_dsa.pubid_dsa
ECDSAid_ecdsa.pubid_ecdsa
ED25519id_ed25519.pubid_ed25519

RSA暗号で鍵を作成する

「-t」オプションで鍵タイプにRSAを指定する

$ ssh-keygen -t rssa

実行結果

[rin@localhost ~]$  ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/rin/.ssh/id_rsa):  #保存する秘密鍵ファイル名を指定する。指示通りのファイルで構わない場合はEnterキーを押す
Enter passphrase (empty for no passphrase): #秘密鍵を暗号化するためのパスフレーズを入力する
Enter same passphrase again: #パスフレーズをもう一度入力する
Your identification has been saved in /home/rin/.ssh/id_rsa.
Your public key has been saved in /home/rin/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:qm48ecgx30cI5QXMetKAzQb48eJKpf4ok7cNz4gybiA rin@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|   ..= o..       |
|  . o = + .      |
|   . + * .       |
|    + = +        |
|   + . +S.       |
|E o +  .. .      |
|o+.+ *.. .       |
|*o+BB.o . .      |
|=*+=Bo   .       |
+----[SHA256]-----+
[rin@localhost ~]$ 

SSH鍵のフィンガープリントを表示する

秘密鍵を-fオプションで指定して出力する

$ ssh-keygen -l -f ファイル名
$ ssh-keygen -l -f ファイル名 #SSHデーモンが利用するホスト鍵の指紋も出力できる

実行結果

[rin@localhost ~]$ ssh-keygen -l -f ~/.ssh/id_rsa 
2048 SHA256:qm48ecgx30cI5QXMetKAzQb48eJKpf4ok7cNz4gybiA rin@localhost.localdomain (RSA)
[rin@localhost ~]$ 

鍵のパスフレーズを変更する

秘密鍵を-fオプションで指定して出力する

$ ssh-keygen -p -f ファイル名

実行結果

[rin@localhost ~]$ ssh-keygen -p -f ~/.ssh/id_rsa 
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.
[rin@localhost ~]$ 

秘密鍵から公開鍵を生成する

-yオプションと-fオプションで秘密鍵を指定するとペアの公開鍵を生成する。標準出力に公開鍵が書き出されるのでリダイレクトでファイルに記録する

$ ssh-keygen -y -f ~/.ssh/id_rsa > .ssh/id_rsa.pub

実行結果

[rin@localhost ~]$ ssh-keygen -y -f ~/.ssh/id_rsa > .ssh/id_rsa.pub