GitHubの複数のアカウントをローカルで使う: SSH + HTTPS
April 07, 2025

HTTPS
1. 現在の環境で使われているcredential managerを確認する。何も表示されない場合は、3.に進む。
git config --get credential.helper
2. 使用中のcredential managerをリセットする。
2-1. osxkeychain
と表示される場合、macOS keychain
を使っているので下記のコマンドで設定をリセットする。1行ずつ入力してエンターを押し、最後のprotocol=https
を入力した後2回エンター。
git credential-osxkeychain erase
host=github.com
protocol=https
2-2 manager(もしくはmanager-core)
と表示された場合、Git Credential Manager
を使っているので、次のコマンドで設定をリセットする。
echo "protocol=https\nhost=github.com" | git credential-manager erase
git config --global credential.https://github.com.useHttpPath true
この変更は、下記で確認できる。
git config --global -e
4. 個人アクセストークン(PAT)を設定する。
4-1. もしemail認証がまだなら、email認証を確認する。

4-2. Settings > Developer settings > Personal access tokens > Fine-grained tokensに入り、Generate new token
を押す。

4-3. Token name
を入力し、必要な場合はDescription
を入力する。
4-4. Resource owner
から使用するアカウントを選択する。Organizationsの設定によっては自分のアカウントが表示されなかったり、リクエストが必要なケースもある。Organizationsを選ぶことも可能。
4-5. Expiration
からトークンの有効期限を設定する。
4-5. Repository access
からトークンでアクセスする予定のレポジトリを選択する。Organizationsの設定によってはOnly select repositories
が表示されない場合もある。
4-6. Permissions
からトークンに付与する権限を選択する。最低限の権限(PoLP)に注意する。REST APIエンドポイントによる権限の詳細はこのリンクを確認。
Private repositoryがcloneできない場合
All repositories、Only select repositoriesを選択した場合表示されるRepository permissionsオプションのpermission付与が必要 ↪︎ Repository permissions > Contents > Access: Read and write
4-7. Generate token
でトークンを生成する。
4-8. 生成されたトークンをコピーする。
5. git cloneや、既存に存在するリポジトリにアクセスする時、Username
とPassword
を要求されるが、その時Password
にトークンを入力する。Gitはremote URLをベースにトークンをキャッシュするので1回のみの入力になる。
SSH
1. SSH key生成。
cd ~/.ssh
~/.ssh
でkeyファイルを管理するので移動する。
処理が速く、容量も小さい上に、セキュリティも強いED25519
を使おう。でも環境のためRSA(4096 bit)
も記載して置く。
1-1. ED25519
の場合
ssh-keygen -t ed25519 -C "example@mail.com" -f "output_keyfile_name"
* -t ed25519
: algorithmタイプの指定
* -C "example@mail.com"
: pubに入るコメントの入力。一般的にemailを入れる
* -f "output_keyfile_name"
: 生成されるkeyファイル名
1-2. RSA (4096 bit)
の場合
ssh-keygen -t rsa -b 4096 -C "example@mail.com" -f "output_keyfile_name"
* -b 4096
: 使うbitを指定。RSAのデフォルトは、3072
2. Passphrase
を登録する。
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
上記のssh-keygen
コマンドを打つと、Passphrase
の入力を要求される。何も入力せず、エンターを押すと、Passphrase
は登録されない。これはGitHubに登録する時に必要なパスワードではなく、Private key
を保護するために使うもので、SSH private key
が流出された場合でもこのPassphrase
が分からないと使えないのでなるべく登録しよう。
3. 生成されたSSH keyの確認。
Passphrase
を設定してエンターを押すと、output_keyfile_name
(private key)とoutput_keyfile_name.pub
(public key)が生成される。個人用と会社用を作るとしたらそれぞれのemail(-C, commentオプション)
とファイル名(-f)
で作る。
毎回Passphrase
を入力するのは辛いので、ssh-agent
を使う。
eval "$(ssh-agent -s)"
eval
を使ってssh-agent
をバックグラウンドで実行させる。
ssh-add ~/.ssh/ed25519_personal
ssh-add ~/.ssh/ed25519_organization
ssh-keygen
時にファイル名(-f)
として指定して生成されたPrivate key
をssh-add
でssh-agent
に登録する。
ssh-add --apple-use-keychain ~/.ssh/ed25519_personal
ssh-add --apple-use-keychain ~/.ssh/ed25519_organization
macOSの場合は、--apple-use-keychain
を使うことでシェルが新しくなってもPassphrase
を入力しなくて済む。
ssh-add -l
登録されたkeyは、リストオプション(-l)
で確認できる。
5. configの編集。
~/.ssh/config
を編集する。もしファイルが存在しない場合はファイルを新しく作る必要があるが、必ず存在しないかを先に確認しよう。
Host gh-p
HostName github.com
# macOSの場合
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/ed25519_personal
Host gh-org
HostName github.com
# macOSの場合
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/ed25519_organization
* Host
: aliasなので自分ルールで大丈夫
* HostName github.com
: SSHのtarget(向き)なので、変えてはいけない
* UseKeychain yes
: 4.で入れたssh-add --apple-use-keychain
を使うため
* AddKeysToAgent yes
: ssh-add
を毎回しなくても済む
* IdentityFile
: Private key
の場所
6. GitHubに登録。
6-1. Settings > SSH and GPG keysに入り、New SSH key
を押す。

6-2. Title
はkeyのラベルのようなものなので分かりやすい名前を付ける。
6-3. Key type
は今回はAuthentication
目的なので、Authentication Key
を選択する。Signing key
はコミット署名時に使う。
6-4. Key
には、ssh-keygen
で生成されたPublic key
を貼る。今回のケースだと、~/.ssh/ed25519_personal.pub
ターミナル環境では、下記コマンドでコピーできるが、もちろん好きなエディターでコピーしても良い。
pbcopy < ~/.ssh/ed25519_personal.pub
7. 接続もろもろ
7.1 下記コマンドで接続テストをしてみる。
ssh -T git@gh-p
ssh -T git@gh-org
Hi user_name! You've successfully authenticated, but GitHub does not provide shell access.
と表示されればOK。user_name
は、アカウント別に名前が違う場合はそれぞれ違う。
7.2 GitHubリポジトリのClone時の基本パスが下記のようなら、
git@github.com:account/repository.git
⇩
git@gh-p:account/repository.git
のようにgit@
の右の部分(Host alias
)を~/.ssh/confg
で設定したHost
(Host alias
)に置き変える必要がある。接続テストで打ったのと一緒。
7.3 .git/config
の修正を忘れないようにしよう。
git config --global user.name
git config --global user.email
git config --local user.name
git config --local user.email
で一回は確認し、違う情報でリポジトリに変更を加えないように注意しよう。
localが優先されるので、
git config user.name
git config user.email
から確認されるのは、--local
と同じで、リポジトリの.git/config
で確認できる。
--global
は、
git config --global -e
で確認できる。