SSH 鍵ペア・API 鍵ペアの作り方おさらい

ある VM に SSH 接続する時に使う鍵ペアとか、API Key として認証に使用する鍵ペアの作り方をおさらいする。それぞれは何らかの記事で紹介したことがあると思うが、コマンド単体で紹介したことがなかったので。

目次

SSH 鍵ペアの作り方

$ ssh-keygen -t rsa -b 4096 -N '【パスフレーズ】' -C '【コメント】' -f "${HOME}/PATH/TO/id_rsa"

Generating public/private rsa key pair.
Your identification has been saved in /Users/Neo/PATH/TO/id_rsa.
Your public key has been saved in /Users/Neo/PATH/TO/id_rsa.pub.
The key fingerprint is:
SHA256:pUXKnmb9pR2P5nhJOLGoz3L5ugsCsXW8+HN+phOM8tQ test
The key's randomart image is:
+---[RSA 4096]----+
|          .      |
|       o o       |
|    . . = o      |
|     + + B  .    |
|    o . S+.. +o  |
|     ..+o E.++.+ |
|      .++..ooo+..|
|       .+*+ o+o  |
|         +OXo..  |
+----[SHA256]-----+

生成できたファイルの内容サンプルは以下。

-----BEGIN OPENSSH PRIVATE KEY-----
……中略……
-----END OPENSSH PRIVATE KEY-----
ssh-rsa ……中略…… コメント

API 鍵ペアの作り方

いわゆる RSA 鍵のことだ。

# 秘密鍵ファイルを作成する
$ openssl genrsa -out "${HOME}/PATH/TO/key-private.pem" 4096

Generating RSA private key, 4096 bit long modulus
..........++
....................................................++
e is 65537 (0x10001)

# 秘密鍵ファイルから公開鍵ファイルを作成する
$ openssl rsa -pubout -in "${HOME}/PATH/TO/key-private.pem" -out "${HOME}/PATH/TO/key-public.pem"

writing RSA key

# オマケ : 秘密鍵ファイルから「フィンガープリント」を出力する
$ openssl rsa -pubout -outform DER -in "${HOME}/PATH/TO/key-private.pem" | openssl md5 -c

writing RSA key
13:e4:93:84:7d:85:73:fe:c9:be:0b:de:79:9f:2f:92

生成できたファイルの内容サンプルは以下。

-----BEGIN RSA PRIVATE KEY-----
……中略……
-----END RSA PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
……中略……
-----END PUBLIC KEY-----

以上。