はじめに
これまでlocalからGitHubへのpushはHTTPSで接続していましたが
GitHub公式ドキュメントを参考にSSH接続も設定できたので
記録として残しておきます。
GitHub公式ドキュメント
OS
- macOS Catalina(10.15.7)
作業内容
1. SSHキーの作成
2. SSHキーをssh-agentに登録する
3. GitHubにSSHキーを登録する
最後に通信テスト
1. SSHキーの作成
ターミナルからssh-keygenコマンドでed25519形式で
- 秘密鍵
- 公開鍵
の2つを生成する。
SSHキーの種類には、よりセキュアなRSAの4096ビット形式もあるようだが、
GitHubの公式ドキュメントでは、何故かレガシーなシステムとして記載があるので
ひとまずed25519形式で作成していく。
個人的に、下記のようにざっくり理解しておく事にした
セキュリティ面: RSA(4096bit) -> データ量が多いため重い
パフォーマンス速度: ed25519 -> データ量が軽い
# 既存のSSHキーが存在するか確認
% ls -al ~/.ssh
# 未使用の無駄なSSHキーがあれば削除しておく
% rm -rf ~/.ssh/未使用のキー
# ed25519形式のSSHキーを作成する
# (メールアドレスはGitHubに登録しているものにする)
% ssh-keygen -t ed25519 -C "your_email@example.com"
↓ 質問に答えていく
# SSHキーの保存先パスとファイル名を決める
# -> そのままEnterと押すと()内がデフォルトとなる
# ※ 今回はGitHub用のために末尾を「_github」としている
Enter file in which to save the key (/Users/ユーザー名/.ssh/id_ed25519): /Users/ユーザー名/.ssh/id_ed25519_github
# SSHキーのパスフレーズ設定
Enter passphrase (empty for no passphrase): 任意のパスワードを入力
# パスフレーズの再確認
Enter same passphrase again: 再度パスワードを入力
↓ 入力が完了すると、秘密鍵と公開鍵が生成される
Your identification has been saved in /Users/ユーザー名/.ssh/id_ed25519_github.
Your public key has been saved in /Users/ユーザー名/.ssh/id_ed25519_github.pub.
# 生成されたSSHキーの確認
% ls -al ~/.ssh
参考まで: RSA(4096bit)形式の作成
# RSA4096ビット形式のSSHキーを作成する
# (メールアドレスはGitHubに登録しているものにする)
% ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
↓ 質問に答えていく
# SSHキーの保存先パスとファイル名を決める
# -> そのままEnterと押すと()内がデフォルトとなる
# ※ 今回はGitHub用のために末尾を「_github」としている
Enter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa): /Users/ユーザー名/.ssh/id_rsa_github
# SSHキーのパスフレーズ設定
Enter passphrase (empty for no passphrase): 任意のパスワードを入力
# パスフレーズの再確認
Enter same passphrase again: 再度パスワードを入力
↓ 入力が完了すると、秘密鍵と公開鍵が生成される
Your identification has been saved in /Users/ユーザー名/.ssh/id_rsa_github.
Your public key has been saved in /Users/ユーザー名/.ssh/id_rsa_github.pub.
# 生成されたSSHキーの確認
% ls -al ~/.ssh
2. SSHキーをssh-agentに登録する
# バックグラウンドでssh-agentを起動する
% eval "$(ssh-agent -s)"
# VIMで.ssh/configを開いて設定しておく
% vi ~/.ssh/config
↓ 「i」キーを押してインサートモードに切り替えて追記
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github
# 秘密鍵をssh-agentに登録
% ssh-add ~/.ssh/id_ed25519_github
3. GitHubにSSHキーを登録する
あとは、生成できた公開鍵のコードをコピーして
GitHub上にそのままペーストして登録する。
# 公開鍵をクリップボードにコピーする
% pbcopy < ~/.ssh/id_ed25519_github.pub
以降はGitHub画面でGUI操作で設定を行う
以上で全ての作業が完了する。
SSH通信の確認
# SSH通信の確認する
% ssh -T git@github.com
Hi ユーザー名! You've successfully authenticated, but GitHub does not provide shell access.
終わりに
2021年8月13日にGitHubがHTTPSのパスワード認証が廃止されたようですが
私の場合、git pushコマンドが通っていたのは何故なんでしょう…
(いまだにHTTPSで通ってしまう)
恐らく、初期設定した記憶が曖昧なんですが、MacOSなんで
下記ツールがパスワード管理していて上手く機能しているんですかね。