初めに #
安全なリモート接続を実現するために欠かせないのが「SSH鍵認証」です。
その中でも広く利用されている実装が「OpenSSH
」です。
OpenSSHは、オープンソース(OSS)で開発されており、Linux・UNIX系システムを中心に、幅広い環境で採用されています。
以下はOpenSSHの移植版(ポータブル向け)のミラーリポジトリとなっております。
Portable OpenSSH
そこで今回は、OpenSSH
を使用してSSH秘密鍵と公開鍵を作成する基本的な手順について、初心者にもわかりやすく解説します。
ssh-keygenコマンド #
Linux環境では、OpenSSHのコマンドラインツールssh-keygen
を使用する事で簡単にSSH鍵ペア(秘密鍵
・公開鍵
)を作成できます。
基本的なコマンド構文は以下のとおりです。
ssh-keygen -t 暗号化タイプ -b ビット数 -m 鍵ファイルの形式
ssh-keygenコマンドで作成する鍵には、以下の暗号化タイプを指定することができます。
タイプ | 説明 |
---|---|
rsa | もっとも広く使用される公開鍵暗号方式。 |
dsa | 主にデジタル署名専用の方式。※非推奨 |
ecdsa | セキュリティ性と速度のバランスが良い楕円曲線暗号方式。 |
ed25519 | 高速かつ高いセキュリティを備えた楕円曲線暗号方式。 |
現在は特別な理由がなければ ed25519
または高ビット数の rsa
を選択するのが一般的となります。
鍵のビット数(長さ)は、セキュリティレベルに直結する値となります。
以下はよく利用されるビット数となります。
ビット数 | 説明 |
---|---|
2048ビット | 一般的な用途に広く使われている標準的な強度。 |
3072ビット | より高いセキュリティを求める場合に推奨。 |
4096ビット | 最高クラスの安全性が求められる場合に使用。 |
ssh-keygenコマンドで作成する鍵には、以下のファイルの形式を指定することができます。
形式 | 説明 |
---|---|
PEM | OpenSSHが標準で使用する形式。多くのツールで互換性互換性がある。 |
RFC4716 | 主に公開鍵を交換するために使われる標準フォーマット。 |
PKCS8 | 秘密鍵を標準化された形式で保存するための仕様。 |
鍵ペアを作成する #
下記はssh-keygenを使用した作成例となります。
今回は鍵のタイプは「rsa
」としビット数は「3072ビット
」、ファイルの形式を「PEM
」とします。
ssh-keygen -t rsa -b 3072 -m PEM
上記のコマンドを実行すると、対話形式でSSH鍵ペアの作成プロセスが始まります。
対話モードの流れはいかとなっております。
ステップ | 内容 | 詳細 |
---|---|---|
1 | 保存先ファイルの指定 | 鍵ファイルの保存場所を尋ねられる。デフォルトは /root/.ssh/id_rsa 。 |
2 | パスフレーズの入力 | 秘密鍵に設定するパスフレーズを入力(空Enterでなしも可)。 |
3 | パスフレーズの再入力 | 確認のため、同じパスフレーズを再度入力。 |
4 | 鍵ペアの生成完了メッセージ | 秘密鍵と公開鍵が作成された旨が表示される。 |
5 | フィンガープリントの表示 | 鍵の一意性を確認するためのSHA256形式フィンガープリントが表示される。 |
6 | Randomartイメージの表示 | 視覚的な識別用としてランダムアートパターンが出力される。 |
下記は全てデフォルト設定で作成を行った例となります。
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
.our identification has been saved in
.pub.public key has been saved in
The key fingerprint is:
SHA256:ZL33KnCzyhUavLTSAqUWQK1NYdC9V4G4d1ERn5b9cls root@servername
The key's randomart image is:
+---[RSA 3072]----+
| .++oo . ..o+o |
| o+ o ..o . + |
| +. .oo... = .|
| . .+o+o .. . .|
| + oS.o . . E|
| . . o.=oo . oo|
| o =o.o .. |
| + .o . |
| o. .. |
+----[SHA256]-----+
デフォルト設定では、作成された鍵ペアは以下のディレクトリに保存されます。
/ユーザーディレクトリ/.ssh/id_rsa
次に、作成した鍵ペアをSSHで利用できるように、いくつかの操作を行います。
まずは、ユーザーの .ssh ディレクトリに移動します。
cd ~/.ssh
次に、公開鍵(id_rsa.pub
)を authorized_keys
という名前にリネームします。
これにより、SSHが公開鍵を認識できるようになります。
mv id_rsa.pub authorized_keys
次に、作成した秘密鍵(id_rsa
)をローカルにダウンロードします。
その後、サーバーに保存されている秘密鍵は削除します。
rm -f id_rsa
これで、SSH接続に必要な鍵ペアを準備する準備が整いました。