Macでssh-keygenコマンドを使いed25519の秘密鍵・公開鍵を作成する手順

セキュリティーコマンド
Macでssh-keygenコマンドを使いed25519の秘密鍵・公開鍵を作成する手順
Memo
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Macでssh-keygenコマンドを使い秘密鍵・公開鍵を作成する手順をメモしました。

公開鍵認証

公開鍵認証とは?

公開鍵認証とは?
公開鍵認証とはパスワードの代わりに公開鍵と秘密鍵のペアを用いる認証を行う認証方式です。

公開鍵認証のメリット

  • 秘密鍵を持っていないとログインできないためセキュリティが向上する
  • 鍵を設定すればサーバーごとにパスワードを設定する必要がなくなる

公開鍵認証のデメリット

  • 鍵の作成や設定が必要
  • 鍵を紛失したらログイン出来なくなる

ed25519について

従来は鍵の作成の際にRSAという暗号化方式が利用されていました。
しかしED25519の方がRSAよりも強度が高く速いです。
ED25519に対応していない古いSSHで接続する必要が無い限り
今後はED25519を利用した方が良さそうです。

環境

  • Mac OS Big SUR 11.3.1

ファイル操作で利用するUnixコマンドについて

基本的なディレクトリ作成やファイル操作はUnixコマンドを利用します。
Unixコマンドについて詳しくはこちらの記事を参考にしてください。

鍵の確認

鍵の有無(SSH keys)を確認

lsコマンドでユーザー直下の~/.sshにファイルが存在するか確認します。

terminal
$ ls -a ~/.ssh

すでに作成済

下記のファイルが存在したら鍵はすでに作成済みです。

id_rsa.pub
id_rsa

秘密鍵だけがあった場合

秘密鍵(id_rsa)だけがあった場合下記記載の手順で公開鍵の生成が可能です。

id_rsa

鍵(SSH Key)の作成

ssh-keygenコマンドで秘密鍵(id_rsa)と公開鍵(id_rsa.pub)を作成します。
your_email@example.comは利用しているメールアドレスへ置き換えてください。

terminal
$ ssh-keygen -t ed25519 -C "your_email@example.com"

色々と確認されるので下記の

1. Keyを保存するパスの設定

基本的にはユーザー直下の.sshディレクトリに作成するため
特に変更する必要がなければEnterを押します。

Enter file in which to save the key (/home/user/.ssh/id_rsa): 

2. パスフレーズの設定

鍵を利用する際にパスフレーズの入力を必須にしたい場合はパスフレーズを入力します。
もしパスフレーズを設定しない場合はそのままEnterを押します。

Enter passphrase (empty for no passphrase): 

3. パスフレーズの再設定

「2」でパスフレーズを入力した場合は同じ内容を再入力します。
設定していない場合はEnterを押します。

Enter same passphrase again: 

4. 鍵が生成

鍵が生成されます。

The key fingerprint is:
SHA256:fB9JwSozKFDlsPzrLLjQuyaFu0zx21dYeWiFz3wIkGs your_email@example.com
The key's randomart image is:
+---[RSA 3072]----+
|   .o...o ...    |
|  .. + . o ...   |
|   .o ... O.o    |
|    ...E+=.B o   |
| o   .o S+o +    |
|..+    o o . .   |
|.+.o  . .   .    |
|=.o.+o .         |
|.=++ o+          |
+----[SHA256]-----+

鍵が生成されているか.sshディレクトリの中身を確認

鍵が生成されているかどうかlsコマンドで.sshディレクトリの中身を確認します。

$ ls -a .ssh/
.  ..  id_rsa  id_rsa.pub

id_rsa

秘密鍵ファイルになります。

id_rsa.pub

公開鍵ファイルになります。

作成した公開鍵をメモ

pbcopyコマンドで公開鍵(~/.ssh/id_rsa.pubの中身)をコピーします。

terminal
$ pbcopy < ~/.ssh/id_rsa.pub

この公開鍵(コピーしたテキスト)はサーバやgithubなどへ公開鍵を登録する際に必要なためメモをしておきます。

作成済の秘密鍵から公開鍵を作成

ssh-keygenコマンドで作成済の秘密鍵(id_rsa)から公開鍵(id_rsa.pub)を作成します。

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

作成した公開鍵の登録

ログイン先サーバーの設定

ログインするサーバーへログインします。

サーバ接続の例 1

userというユーザーでXXX.XXX.XX.XXというIPのサーバへログインします。

terminal
$ ssh user@XXX.XXX.XX.XX

サーバ接続の例 2

vagrantで作成したvmへログインします。

terminal
$ vagrant ssh

authorized_keysへ追記

ユーザー直下のディレクトリにある~/.ssh/authorized_keysファイルの一番下へ公開鍵のテキスト追記します。

terminal
$ vi ~/.ssh/authorized_keys

authorized_keysがない場合新規作成

~/.ssh/authorized_keysが存在しない場合は新規にファイルを作成し公開鍵のテキストを追記します。

terminal
$ vi ~/.ssh/authorized_keys

パーミッションを変更

新規で作成した場合はパーミッションを600へ変更します。

terminal
chmod 600 ~/.ssh/authorized_keys

これでログイン先のサーバーの設定は完了です。

疎通確認

ログインしたいクライアントからサーバへ接続します。
userというアカウントでXXX.XXX.XX.XXというサーバへログインする例です。

$ ssh user@XXX.XXX.XX.XX

githubへ登録

下記のSSH keysの設定ページへアクセスします。
https://github.com/settings/keys

New SSH keyを押して公開鍵を登録

New SSH keyを押して公開鍵を登録します。

Github設定画面

New SSH keyを押して公開鍵を登録

TitleとKeyを入力しAdd SSH keyを押して公開鍵を登録

Title

任意の名前を入力します。

Key

公開鍵の中身を貼り付けます。

Add SSH keyを押して設定完了です。

Github設定画面

TitleとKeyを入力しAdd SSH keyを押して公開鍵を登録

疎通確認

Githubへアクセス出来るか確認します。

terminal
$ ssh -T git@github.com

参考文献

終わりに

最後までご覧いただきありがとうございます。
この記事ではMacでssh-keygenコマンドを使いed25519の秘密鍵・公開鍵を作成する手順について紹介させていただきました。

これからも皆様の開発に役立つ情報を提供していきたいと考えています。
今後ともよろしくお願いいたします。