Macでssh-keygenコマンドを使いed25519の秘密鍵・公開鍵を作成する手順
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
すでに作成済
下記のファイルが存在したら鍵はすでに作成済みです。
rustid_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
を押します。
bashEnter file in which to save the key (/home/user/.ssh/id_rsa):
2. パスフレーズの設定
鍵を利用する際にパスフレーズの入力を必須にしたい場合はパスフレーズを入力します。
もしパスフレーズを設定しない場合はそのままEnter
を押します。
javaEnter passphrase (empty for no passphrase):
3. パスフレーズの再設定
「2」でパスフレーズを入力した場合は同じ内容を再入力します。
設定していない場合はEnter
を押します。
yamlEnter same passphrase again:
4. 鍵が生成
鍵が生成されます。
vbnetThe 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
ディレクトリの中身を確認します。
shell$ 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)を作成します。
terminalssh-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へ変更します。
terminalchmod 600 ~/.ssh/authorized_keys
これでログイン先のサーバーの設定は完了です。
疎通確認
ログインしたいクライアントからサーバへ接続します。
user
というアカウントでXXX.XXX.XX.XX
というサーバへログインする例です。
ruby$ ssh user@XXX.XXX.XX.XX
githubへ登録
下記のSSH keysの設定ページへアクセスします。
https://github.com/settings/keys
New SSH keyを押して公開鍵を登録
New SSH key
を押して公開鍵を登録します。
Github設定画面
TitleとKeyを入力しAdd SSH keyを押して公開鍵を登録
Title
任意の名前を入力します。
Key
公開鍵の中身を貼り付けます。
Add SSH keyを押して設定完了です。
Github設定画面
疎通確認
Githubへアクセス出来るか確認します。
terminal$ ssh -T git@github.com
参考文献
記事Article
もっと見る- article
Dockerの利用していないゴミを掃除しディスクスペースを解放するいくつかのやり方を紹介
- article
Next.js のバンドルサイズを可視化する@next/bundle-analyzer の紹介
- article
VSCodeでTypescriptファイルのimport補完で相対パスではなくエイリアスするための設定
- article
UUIDより短いユニークなIDを生成できるnpmライブラリnanoidの使い方
- article
【解決方法】TypeScript発生したTS2564 エラーの対処
- article
express で IP を取得する際などに利用する req.connection 非推奨(deprecated)の対処