対象読者
- Github にSSHの接続したい方
環境
MacBook Pro M3 Pro
概要
ここでは、SSHを利用した認証設定を行います。
これにより、リモートのサーバーやサービスに、ユーザー名と personal access token を入力することなく、GitHubに接続できます。
1. 既存のSSHキーを確認する
はじめに、ローカルに既存のSSH key が存在するか確認します。
$ ls -al ~/.ssh
#ログの例
-rw------- 1 hiro staff 2622 6 17 2025 id_rsa
-rw-r--r--@ 1 hiro staff 587 6 17 2025 id_rsa.pub
-rw------- 1 hiro staff 933 4 11 2025 known_hosts
ここのログの例では、id_rsa
と id_rsa.pub
のキーペアが存在しているので、これらを使ってGitHubの認証設定を行うことができます。新しくキーを生成する必要はありません。
秘密鍵と公開鍵について
-
id_rsa
秘密鍵と呼ばれるものです。これは絶対に他人に共有してはいけない秘密の鍵
です。
生成するマシンのローカルに保存されています。 -
id_rsa.pub
.pub が公開鍵
と呼ばれるものです。これがGitHubに登録する鍵となります。
Githubでは、id_rsa.pub・id_ecdsa.pub・id_ed25519.pubのファイル名が既定でサポートされています。 -
known_hosts
接続したことのあるSSHサーバーの情報です。
GitHubのサーバー情報などが記録されています。
キーペアが存在しない場合、別のキーペアを使用する場合は、次の手順へ進んでください。
2. 新しい SSHキーを生成する
以下のコマンドで、キーペアを生成します。
$ ssh-keygen -t ed25519 -C "your_email@example.com"
Generating public/private ed25519 key pair.
> Enter file in which to save the key (/Users/YOU/.ssh/id_ed25519): [Press enter]
> Enter passphrase (empty for no passphrase): [Press enter]
> Enter same passphrase again: [Press enter]
上記の隠しフォルダ .ssh
直下に作成してよいのか尋ねられるので enter を押します。
その次に、passphrase をどうするか尋ねらますが、empty で良いので enter を押します。
生成が完了したら、.ssh フォルダ直下にid_ed25519
とid_ed25519.pub
があることを確認できるはずです。
補足
passphraseを設定することで、セキュリティを高めることができます。ただし、設定した場合は、Git操作のたびに入力が必要になります。
以前に SSH キーを作成した場合、ssh-keygen から別のキーの書き換えを求められる場合があるので注意してください。既存のものを、別のフォルダへ移動させるなど対応しましょう。
3. アカウントへの新しい SSH キーの追加
Settings < SSH and GPG keys の New SSH Key
を選択します。
Add new SSH Key で各設定を入力していきます。
Titleは、公開鍵と対となる秘密鍵を保存しているPC名など適当に決定します。
Key type は、Authentication Key のままにします。
Key の欄に、先ほど作成した id_ed25519.pub
をテキストエディターで開いて、メールアドレス以外の部分を入力します。
入力し終えたら、Add SSH key
を押して完了です。
これで、Authentication keys の一覧に追加されました。
4. SSH 接続をテストする
生成・追加した SSH Key で Github に接続を試みます。
以下のコマンドを実行してください。
$ ssh -T git@github.com
> The authenticity of host 'github.com (IP ADDRESS)' can't be established.
> ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
> Are you sure you want to continue connecting (yes/no)? [yes enter]
はじめて接続する時は、上記のようなログが出ると思います。 ED25519 key fingerprint
で接続するけどいいのか問われるので、メッセージのフィンガープリントが、GitHub の公開キー フィンガープリントと一致することを確認します。一致する場合は、「yes」と入力し enter を押します。
その後、接続成功のログを確認することが出来れば、SSHキーを用いた接続設定は完了です。
SSH 認証について
SSH認証について詳しく知りたい方は、Githubのドキュメントや下記の動画を参考にしてみるといいかもしれません。
SSH認証について
クライアント側でキーペアを作成する。
秘密鍵をローカルに、公開鍵をリモートのサーバーなどに配置する。
SSHとは?【分かりやすい解説シリーズ #65】【プログラミング】 - YouTube
- 別のコンピュタを遠隔操作するツール
- 通信は全て暗号化
- SSH(Secure Shell) の認証方式
- サーバーにリモートログインする時 パスワードでの認証ではなく公開鍵認証という認証方式がある
- 公開鍵認証
- 接続する度にパスワードを入力するのではなく、秘密鍵と公開鍵という仕組みを利用してより安全に接続を行う
公開鍵認証とは?【分かりやすい解説シリーズ #24】【プログラミング】 - YouTube
秘密鍵
- 電子署名というデータを作成できる
- ローカルパソコンに保存
公開鍵
- 電子証明データが正しいか検証できる
- サーバーの中に保存
まとめ
設定することで、毎回のGit操作でユーザー名とパスワード(またはトークン)の入力するこなく、安全に接続することが出来るようになりました。
秘密鍵は絶対に共有してはいけないことに注意しましょう。