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 | 存在しないホスト鍵形式を一括して作成する |
-e | OpenSSHの鍵ファイルを読み込み、RFC4716互換フォーマット鍵を標準出力に出力する |
-f ファイル名 | 扱う鍵ファイルを指定する |
-i 鍵ファイル名 | 暗号化されていない秘密鍵もしくは公開鍵を読み込んでOpenSSH互換の鍵ファイルを標準出力に出力する |
-l | 公開鍵のフィンガープリントを表示する |
-N パスフレーズ | 新しいパスフレーズを指定する |
-p | 新しい鍵を生成する代わりに指定した秘密鍵のパスフレーズを変更する |
-P パスフレーズ | 現在のパスフレーズを指定する |
-t タイプ | 暗号化タイプを指定する(rsa1/rsa/dsa/ecdsa/ed25519) |
-b ビット | 暗号強度を指定する |
-R ホスト名 | 指定したホストの情報をknown_hostsファイルから削除する |
公開鍵・秘密鍵のファイル名
暗号アルゴリズム | 公開鍵ファイル | 秘密鍵ファイル |
---|---|---|
RSA(SSHバージョン1) | identity.pub | identity |
RSA(SSHバージョン2) | id_rsa.pub | id_rsa |
DSA | id_dsa.pub | id_dsa |
ECDSA | id_ecdsa.pub | id_ecdsa |
ED25519 | id_ed25519.pub | id_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