SSHのセットアップ
本ガイドでは、SSHを使用したGitHub接続の設定方法、Gitの複数アカウント管理方法、および2段階認証(2FA)を考慮した認証の更新について、図やサンプルコード、実践例を交えながら詳細に解説します。
SSHキーの生成
ssh-keygen -t ed25519 -C "your@email.com"-t ed25519: 最新の暗号方式ED25519を指定します。安全性が高く、推奨される方式です。-C "your@email.com": SSHキーにコメントとしてメールアドレスを追加します。
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/yourname/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase): パスフレーズは任意で設定可能ですが、セキュリティ向上のため設定を推奨します。
SSHエージェントの起動と鍵の追加
eval (ssh-agent -c) # Fishシェル用
ssh-add ~/.ssh/id_ed25519eval (ssh-agent -c): SSHエージェントを起動します。エージェントはSSHキーの管理を行い、毎回パスフレーズを入力しなくても済むようにします。ssh-add: SSHキーをエージェントに追加します。
GitHubにSSHキーを追加
-
公開鍵をクリップボードにコピー:
cat ~/.ssh/id_ed25519.pub | pbcopy # macOS cat ~/.ssh/id_ed25519.pub | xclip -selection clipboard # Linux -
GitHubにログインし、設定画面から「SSH and GPG keys」にアクセス。
-
「New SSH key」をクリックして、コピーした公開鍵を追加。
接続の確認
次のコマンドで、GitHubへのSSH接続が正常に動作しているか確認します。
ssh -T git@github.com正常に接続できた場合、以下のようなメッセージが表示されます:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.Gitの複数アカウント設定
Gitを複数のアカウントで使用する場合、各リポジトリごとに異なるユーザー名やメールアドレスを設定する必要があります。以下の手順でそれを実現します。
グローバルなGit設定ファイルの編集
# 1つ目のアカウントの設定
git config --global user.name "YourFirstUserName"
git config --global user.email "yourfirstemail@example.com"
# 2つ目のアカウントの設定
git config --global --add user.name "YourSecondUserName"
git config --global --add user.email "yoursecondemail@example.com"
# 設定ファイルの確認
git config --global --listリポジトリごとの設定
特定のリポジトリで異なるアカウントを使用する場合、ローカルな設定を行います。
git config user.name "YourLocalUserName"
git config user.email "yourlocalemail@example.com"ヒント: 複数アカウントを使用する際は、SSH設定もそれぞれ異なるキーで行うと便利です。たとえば、~/.ssh/configに各アカウントごとの設定を行います。
# ~/.ssh/config の設定例
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personalリモートリポジトリの指定
異なるアカウントでのプッシュを行う場合、リモートURLを指定します。
git remote set-url origin git@github-work:username/repo.git2FAとPATの活用
2段階認証(2FA)後の問題
GitHubやGitLabで2段階認証を有効にすると、従来のユーザー名とパスワードでのHTTPS認証が使用できなくなります。これにより、次のようなエラーが発生することがあります:
git pull origin master
remote: The project you were looking for could not be found.
fatal: repository 'https://github.com/your_name/your_repo.git' not foundこの問題を解決するためには、パーソナルアクセストークン (PAT) を使用してリモートURLを更新する必要があります。
PATを作成
GitHubのDeveloper settingsから新しいPATを作成し、必要なスコープを選択します(repo, admin:org, workflowなど)。
リモートURLの変更
set PAT 'your_personal_access_token'
git remote set-url origin https://oauth2:$PAT@github.com/your_name/your_repo.gitこれにより、.git/configが次のように変更されます:
+ [remote "origin"]
+ url = https://oauth2:ACCESS_TOKEN@gitlab.com/yourself/yourproject.gitHTTPSからSSHへ移行する際の注意点
2段階認証後は、HTTPSではなくSSHを使用してリポジトリにアクセスすることを推奨します。以下は、HTTPS URLからSSH URLに変更する手順です。
現在のリモートURLを確認
git remote -vSSH URLに変更
git remote set-url origin git@github.com:your_name/your_repo.git図表と参考リンク
-
SSH接続と認証の流れ

-
参考リンク