概要
リモートリポジトリとなるGitHubと、Macのssh接続を『公開鍵認証』にします。
設定するかどうかは任意ですが、この設定は最初に行っておく方セキュアです。
公開鍵認証とは
詳細は割愛しますが、『公開鍵』と『秘密鍵』という対になる鍵を生成し、サーバ側に公開鍵を設置します。
そして、対となる秘密鍵を持つ端末からのみ、接続を受け付けるようにする仕組みです。
鍵の生成はMacで実施できます。
GitHub側に公開鍵を設置し、対となる秘密鍵のあるMacからのみ接続が可能になります。
当然、秘密鍵は誰にも見られないよう管理してください。
環境
モデル | MacBook Air (Retina, 13-inch, 2018) |
プロセッサ | 1.6 GHz デュアルコアIntel Core i5 |
グラフィックス | Intel UHD Graphics 617 1536 MB |
メモリ | 8 GB 2133 MHz LPDDR3 |
MacOS | Ventura 13.3.1 |
手順
公開鍵・秘密鍵の生成
下記のコマンドを実行して鍵を生成します。
『-C』の後のメールアドレスは、GitHubに登録したメールアドレスにします。
- ”Enter file in which to save the key”は空欄でEnter
- ”Enter passphrase (empty for no passphrase): ”には任意のパスフレーズを入力
- “Enter same passphrase again: “にはパスフレーズを再入力
~ % ssh-keygen -t ed25519 -C "hogehoge@hoge.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/siba/.ssh/id_ed25519):
Created directory '/Users/siba/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/siba/.ssh/id_ed25519
Your public key has been saved in /Users/siba/.ssh/id_ed25519.pub
The key fingerprint is:
〜 省略
キーが生成されたことを確認
ホームディレクトリの配下に2つのファイルが作成され、この中にキーが記載されています。
『.pub』というのが公開鍵で、『.pub』がないのが秘密鍵です。
~ % ls .ssh
id_ed25519 id_ed25519.pub
GitHubの設定
GitHubにログイン
下記のリンクからGitHubにログインします。
Settingをクリック
SSH and GPG Keys をクリック
New SSH Key をクリック
Title と Key の入力する
Title には任意の名前を入力して、Keyには公開鍵の内容をコピペして下さい。
Key Typeはそのままで問題ありません。
公開鍵をコピーするコマンドは以下のとおりです。
~ % pbcopy < ~/.ssh/id_ed25519.pub
SSH keys が下記のような表示になれば、GitHub側のキーの設定は完了です。
SSH接続確認
生成したキーでアクセスできるのか確認します。
- 下記のコマンドを実行します
- 『Are you sure you want to continue connecting (yes/no/[fingerprint])?』は『yes』を入力してEnter
- 『Enter passphrase for key ‘/Users/siba/.ssh/id_ed25519’:』はキーを生成したときのパスフレーズを入力
- 『You’ve successfully authenticated』と表示されればOK
~ % ssh -T git@github.com
The authenticity of host 'github.com (20.27.177.113)' can't be established.
ED25519 key fingerprint is SHA256:+********************/*********************. ←伏せ字
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Enter passphrase for key '/Users/siba/.ssh/id_ed25519':
Hi dsiba4848! You've successfully authenticated, but GitHub does not provide shell access.
ssh-agentの設定
ssh-agentはssh接続するときに、毎回パスフレーズを入力する手間を省いてくれます。
もし都度入力するのが手間でなければ、この操作は不要です。
まずssh-agentを起動します。
~ % eval "$(ssh-agent -s)"
Agent pid 5957
秘密鍵をssh-agentに追加します。
もし秘密鍵のファイル名を変更している場合は『id_ed25519』の部分を修正してください。
~ % ssh-add ~/.ssh/id_ed25519
Enter passphrase for /Users/siba/.ssh/id_ed25519:
Identity added: /Users/siba/.ssh/id_ed25519 (hogehoge@hoge.com)
改めてGitHubへの接続確認を行うと、パスフレーズを求められなくなったことが確認できます。
~ % ssh -T git@github.com
Hi dsiba4848! You've successfully authenticated, but GitHub does not provide shell access.
ssh-agentを使わないときは、『ssh-agent -k』コマンドで終了します。
~ % eval "$(ssh-agent -s)"
Agent pid 1553
~ % ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 1553 killed;
おしまい
この設定を行うことで、この後に出てくるリモートリポジトリとのやり取りがスムーズになります。