2025年版 GitHubアカウントへの新しいSSHキーを追加する方法【ビギナー向け】
新年あけましておめでとうございます!
ありがたいことに今年の1月から新天地で働くことになりまして絶賛オンボーディング&環境構築真っ最中です。そんな中SSH認証キーをGitHubに登録する機会があり、今までなんとなくやってたなということで少しだけ深掘りながら備忘録として設定手順をこちらの記事にまとめていきます🐍
この記事の記載内容
SSHキーとは何か(ざっくり)
SSHキーの生成とGitHubへの登録方法
GitHub公式ドキュメントを活用した手順の確認
SSHとは?
SSH(Secure Shell)は、ネットワーク上での通信を暗号化し、安全なリモート接続を可能にするプロトコルです。SSHは以下のような用途で使用されます:
- リモートサーバーへのログイン
- ファイル転送
- GitHubなどのサービスで認証を行い、リポジトリを操作する
SSHはクライアントとサーバー間で暗号化された通信を確立し、不正なアクセスや情報漏洩を防ぎます。
参考:
SSHキーとは?
SSHキーは、SSH認証のために使用される公開鍵暗号方式の鍵ペア(秘密鍵と公開鍵)です。
秘密鍵: サーバーにアクセスしたいひとのローカル環境に保管され、外部に公開しない鍵。
公開鍵: サーバー(GitHubなど)に登録する鍵。秘密鍵とセットでのみ認証が成功します。
SSHキーを使うことで、パスワードを使わずに安全な認証が可能になります。
1.SSHキーを生成する方法
手順
-
ターミナルを開く
macOSやLinuxでは標準でターミナルが使用可能です。WindowsではWSLやGit Bashを使います。 -
SSHキーを生成
次のコマンドを実行します:
ssh-keygen -t ed25519 -C "your-email@example.com"
ポイント:
ed25519
はモダンで安全性の高い暗号アルゴリズム。- 互換性のために
rsa
(最低4096ビット)を使用することも可能です。
-
保存先を指定
保存先のプロンプトが表示されたら、デフォルト(~/.ssh/id_ed25519
)を使用するにはEnterを押します。 -
パスフレーズを設定
セキュリティを強化するためにパスフレーズを設定します。必要ない場合はEnterを押して省略可能です。
2.SSHキーをSSHエージェントに追加する
SSHエージェントとは?
SSHエージェントは、SSHキーを一時的にメモリ上に保管し、必要に応じてSSHクライアントが自動的に利用できるようにするプログラムです。
追加する理由
-
パスフレーズ入力の手間を省く
- パスフレーズを設定した場合、SSH接続のたびに手動で入力する必要があります。
- SSHエージェントにキーを追加することで、パスフレーズを1回入力するだけで済むようになります。
-
安全性の向上
- 秘密鍵がファイルシステムに直接アクセスされることを防ぎ、セキュリティリスクを軽減します。
-
利便性の向上
- 複数のSSHセッション(例: GitHubリポジトリやリモートサーバー)で同じ鍵を利用する場合に便利です。
SSHキーをSSHエージェントに追加する手順
- SSHエージェントを起動:
eval "$(ssh-agent -s)"
- SSHキーを追加:
ssh-add ~/.ssh/id_ed25519
3.公開鍵をGitHubに登録する
-
公開鍵をコピー
次のコマンドを実行して公開鍵をコピーします:
pbcopy < ~/.ssh/id_ed25519.pub
補足:
pbcopy
が使えない場合は、以下のコマンドで公開鍵を表示して手動でコピーします:cat ~/.ssh/id_ed25519.pub
-
GitHubにログイン
GitHubのSSHキー設定ページに移動します。
-
新しいSSHキーを追加
- 「New SSH key」をクリック。
- Titleには分かりやすい名前(例: "MacBook Pro SSH Key")。
- Keyには公開鍵を貼り付けて「Add SSH key」をクリック。
- 「New SSH key」をクリック。
4.SSH接続をテスト
SSH接続が正しく動作しているか確認するには、次のコマンドを実行します:
ssh -T git@github.com
成功すると、以下のメッセージが表示されます:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
5.GitリポジトリでSSHを使用する
HTTPSからSSHにリモートURLを変更するには、次のコマンドを使用します:
git remote set-url origin git@github.com:username/repository.git
Discussion