🐶

GitHubのremoteURLを自動で切り替える方法

2025/02/02に公開

こんにちは、はるです。

今回、とあるプロジェクトで、ステージングのGitのHTTPS認証が切れ、管理者がおらずトークンを更新できなくて、pullできなくなりました。

「SSH認証に切り替える+複数ユーザーでアカウントを切り替えながら作業したい」
という個人的要望がありましたが、sshの場合、それぞれホスト名が変わり、毎回remoteURLを変えるのは面倒だなと思っていました。

調べたところ、解決できましたのでまとめます。
せっかくなので、メモ代わりに今回行った流れを書きます。

1.鍵の作成

~/.sshに移動して、

$ ssh-keygen -t rsa -b 4096 -C "メールアドレスや説明" -f ~/.ssh/好きな名前

-fを使うと、custom_rsa.pubみたいに好きな名前にできます。

2.configの追加

vi configで、以下の内容を作りました。

~/.ssh.config
# haru用
Host github-haru
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_haru

3.GitHubに公開鍵を登録

cat id_rsa_haru.pubで表示させた中身を、SSH keysに登録します。
https://github.com/settings/keys

4.insteadOfコマンド

$ git config --global url."git@github-haru:".insteadOf "https://github.com/"

上記のコマンドを打つと、github-haruのsshでpushなどを使用したとき、URLがgithub-haru用に自動で変えてくれるものです。

本来であれば、下記のようにURLを変えないといけないと思ってたので、めちゃ便利だなと思いました。
git remote set-url origin git@github.com-personal:your_personal_account/repo.git

configに設定したURLは、下記コマンドで確認できます。

$ git config --global --list | grep url
url.git@github-haru:.insteadof=https://github.com/

5.sshエージェントに追加

まず、sshエージェントに登録されているか確認。

$ ssh-add -l
Could not open a connection to your authentication agent.

このとき、sshエージェントが動いていなかったので、動かしました。

$ eval "$(ssh-agent -s)"
Agent pid 12345

下記で登録します。

$ ssh-add ~/.ssh/id_rsa_haru
Identity added: /home/sn/.ssh/id_rsa_haru

6.GitHubユーザー切り替え

一応、ローカルだけ切り替えてやってみました。
git config --local user.name "GitHubのユーザー名"
git config --local user.email "登録しているメールアドレス"

pull(成功!)

問題なく、pullできました!

管理者のGitHubアカウント情報は知らないので、ユーザーの切り替えは試していないです...
管理者バージョンで1〜6番を行えば、こちらでもpullできるのではと思ってます。

以上です!
ありがとうございました!

Discussion