14
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け🔰】SSH鍵を生成するコマンドと全手順解説(まとめ)

Last updated at Posted at 2023-11-20

概要

あんまり頻繁に使わないため、備忘録ついでに初心者向けに情報をまとめて残す。

SSH 鍵を生成する ssh-keygen コマンドの基本的な使い方
その際、ファイル名を指定して生成する方法や、その他関連コマンドなどの備忘録

利用用途

GitHub や GitLab 等のサービスとの SSH 通信時に必要になる鍵ファイル(公開鍵/秘密鍵)を生成する

手順

コマンドの基本形

基本的に鍵生成コマンドは以下。これを実行するだけでPC内にペアの鍵が生成される。

ssh-keygen

しかし、これではセキュリティが甘く、生成される鍵の管理もしづらいので、以下のようにオプションを付与するのが実際の使い方。

現在の最新手順(推奨)

-C-f の書き方はサンプル

ssh-keygen -t ed25519 -C "user_name@device_name" -f ~/.ssh/id_ed25519_user_name

オプションの意味(詳細は後述)

  • -t: 暗号方式(Ed25519 方式 を指定)
  • -C: コメント(任意だが、「ユーザ名@デバイス名」 がオススメ)
  • -f: 鍵ファイルの生成場所(~/ はホームディレクトリを表す)

実例

# SSH 鍵生成コマンドを実行
$ ssh-keygen -t ed25519 -C "to3izo@macstudio_m2" -f ~/.ssh/id_ed25519_to3izo

# 実行後: 対話式の質問が始まる
Generating public/private ed25519 key pair. # 訳:「公開鍵/秘密鍵 を生成します」
Enter passphrase for "/Users/to3izo/.ssh/id_ed25519_to3izo" (empty for no passphrase):
  # → そのままエンターキーでもOK
Enter same passphrase again: # → そのままエンターキーでもOK

# 秘密鍵「id_ed25519_to3izo」生成
Your identification has been saved in /Users/to3izo/.ssh/id_ed25519_to3izo
# 公開鍵「id_ed25519_to3izo.pub」生成
Your public key has been saved in /Users/to3izo/.ssh/id_ed25519_to3izo.pub
The key fingerprint is: # 指紋 (キーマップ) を表示
SHA256:******************* to3izo@macstudio_m2
The key's randomart image is:
+--[ED25519 256]--+
|            x    |
|  xxxxxxxxxxxx   |
|    xxxxxxxx     |
|   xx  xx  xxx   |
|xxx   xxxxxx     |
|     xxxx   xxx  |
|xx    xx xxxxx   |
+----[SHA256]-----+

→ 上記コマンドを実行すると ~/.ssh/id_ed25519_to3izo という秘密鍵と、id_ed25519_to3izo.pub という公開鍵を生成する。

Tips
複数の鍵を作成する場合は、他の設定ファイル等と混在して見づらくなるので、~/.ssh/ の中に更に任意のディレクトリを用意して、その中にまとめるという方法もあります。

その後、「公開鍵」(.pub が付いたファイル名) の方を、以下のように cat コマンド等でファイルの中身を表示する。

# コマンド実行で中身を表示
$ cat ~/.ssh/id_ed25519_to3izo.pub

# 実行結果 (ファイルの中身)
ssh-ed25519 *****(中略)***** to3izo@macstudio_m2
ssh-rsa *****(中略)***** to3izo3@example.com

表示された 「ssh-」 から始まる文字列を全てコピーして、GitHub 等の利用サービスの SSH Key 登録画面にペーストして使用する。
すると、次回から公開鍵を登録したサイトとの SSH 通信ができるようになる。

従来の手順(非推奨)

従来の実行するコマンドの例は以下だった(-t 未指定(デフォルト)の暗号方式は RSA 方式 となる)

ssh-keygen -C "comment" -f id_rsa_file_name

実際に実行すると以下のような動きをする

# SSH 鍵生成コマンドを実行 (コメントはメールアドレスとかでも良い)
$ ssh-keygen -C "to3izo@example.com" -f ~/.ssh/id_rsa_to3izo

# 実行後
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Your identification has been saved in id_rsa_to3izo # 秘密鍵「id_rsa_to3izo」生成
Your public key has been saved in id_rsa_to3izo.pub # 公開鍵「id_rsa_to3izo.pub」生成
The key fingerprint is:
SHA256:******************* to3izo@example.com
The key's randomart image is:
+---[RSA 3072]----+
|    xxxxx        |
|     xx  x       |
|    xx xx        |
|   x xx xxx      |
+----[SHA256]-----+

# 処理完了

→ 上記コマンドを実行すると ~/.ssh/id_rsa_to3izo という秘密鍵と、id_rsa_to3izo.pub という公開鍵を生成する。

# コマンド実行で中身を表示
$ cat ~/.ssh/id_rsa_to3izo.pub

# 実行結果 (ファイルの中身)
ssh-rsa *****(中略)***** to3izo3@example.com

暗号方式は RSA じゃダメなのか?

基本的にはこれから作るなら "Ed25519" を採用しましょう。

暗号方式 現状の扱い 備考
Ed25519 GitHub 推奨・高速・短い鍵長 より強固な暗号。執筆現在での事実上のデフォルト
RSA (≥3072 bit) まだ利用可 コマンド上のデフォルト
DSA / 1024 bit RSA GitHub で登録不可 2022 年に受付終了 (GitHub Docs)

※ 未だに RSA 方式で記載される記事や解説も多いので、混乱するかもしれませんが、Ed25519 を推奨します(参考: Brandon Checketts

コマンドの意味

基本コマンド

ただ鍵を生成するだけのコマンド

# 鍵生成コマンド
ssh-keygen

デフォルトの生成ファイルの出力先は ~/.ssh/
デフォルトの生成ファイル名は id_rsaid_rsa.pub

名前を指定して作成

ssh-keygen でファイル名を指定して作成する方法。
-f オプションでファイル名(厳密には保存先)が決められる

# 例1. ファイル名を指定して鍵生成
ssh-keygen -f id_rsa_file_name

# 例2. ファイルのフォルダも指定する場合
ssh-keygen -f ./path/to/directory/id_rsa_file_name

標準出力なしで作成

-q 標準出力(実行結果をコンソールに表示すること)を無効にする = キーマップが出ない

ssh-keygen -q -f id_rsa_file_name

コメントの指定

-C オプション
ユーザ名@ホスト名(デフォルト)」以外にする場合に使用
別のメールアドレスとかを使用する(xxx@example.com

ssh-keygen -C comment -f id_rsa_file_name

暗号方式の指定

-t オプション
暗号化形式を「rsa(デフォルト)」以外にする場合、「dsa」「ecdsa」「ed25519」から指定

ssh-keygen -t ed25519 -f id_rsa_file_name

fingerprint の指定

-E オプション
鍵のfingerprintを「sha256(デフォルト)」以外にする場合、「md5」指定

ssh-keygen -E md5 -f id_rsa_file_name

エラー: SSH鍵の権限がオープン過ぎて怒られた場合

何かしら SSH 通信を利用したときに、以下の場合は、SSH キーの権限を変更する必要があります。

発生するエラー: Permissions 0644 for 'id_rsa_xxxxx' are too open.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/xxxxx/.ssh/id_rsa_xxxxx' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/xxxxx/.ssh/id_rsa_xxxxx": bad permissions
git@github.com: Permission denied (publickey).

👉 要訳:「秘密鍵のパーミッションが "644" なので、他のユーザーからアクセスできるような権限では使えないよ !」

権限を変更する

chmod コマンドで、書き込み・読み取り・実行権限を変更する(詳しい説明は割愛)

# 対象のキーを指定(600 もしくは 400)
chmod 600 id_rsa_xxxxx

おまけ

生成したSSH鍵の公開鍵をコピーするときは、以下でも可能

macOSの場合

pbcopy < ~/.ssh/ファイル名.pub

Windows で Git Bash など使っていた場合

clip < ~/.ssh/id_rsa.pub
14
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?