[Github] ローカルにGithubアカウントを複数管理する
- サブのssh鍵を生成する
- まず、 ssh-keygenを使ってサブの鍵を生成します。
cd ~/.ssh
何回か聞かれますが、何も入力しなくて大丈夫です。
1
2
3
4
5
ssh-keygen -t ecdsa -C test@test.com -f is_test_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in is_test_rsa
- 生成されているかを確認します。
ls
リストで自分が作成したものがあるかを確認します。
- 次に、/.ssh/configファイルで設定を追加します。
vim config
(vim以外でも使い慣れてるもので大丈夫です)
以下の記述に従って、追加します。
1
2
3
4
5
6
Host {Host name}.github.com
HostName github.com
IdentityFile ~/.ssh/{鍵名}
User git
TCPKeepAlive yes
IdentitiesOnly yes
- これは僕の例です。 ``` Host {Host name}.github.com
HostName github.com
IdentityFile ~/.ssh/is_test_rsa
User git
TCPKeepAlive yes
IdentitiesOnly yes ``` -公開鍵をコピーします。
pbcopy < ~/.ssh/{鍵名}
設定に入ります。
SSH and GPG Keysをクリックします。
New SSH Keyを押下します。
ここで、Titleはなんでも良くて、Keyに先のコピーしたやつをペーストし、追加をします。(Key Typeはそのままで大丈夫)
SSO設定がある場合のみ Configure SSO を押します。認証していなければ認証のボタンがあります。押下し、SSO認証をすると以下のように変わります。
接続テスト
ssh -T {Host name}.github.com
実行したら
Hi test! You've successfully authenticated, but GitHub does not provide shell access.
こんな感じで出ます。
- Cloneの仕方
複数のアカウントで設定をしたのでCloneの仕方が若干異なります。
一般的にSSHでクローンをするときは
git clone git@github.com:test/test.git
をそのまま git cloneすると思います。
しかし、サブのアカウントで認証したいので、以下のように変更する必要があります。
git clone git@{Host name}:test/test.git
僕の例です。
git clone git@{test}.github.com:test/test.git
これで、Clone できます。
1
2
3
4
5
6
7
8
git clone git@{test}.github.com:test/test.git
Cloning into 'test'...
remote: Enumerating objects: 464, done.
remote: Counting objects: 100% (464/464), done.
remote: Compressing objects: 100% (235/235), done.
remote: Total 464 (delta 192), reused 464 (delta 192), pack-reused 0
Receiving objects: 100% (464/464), 439.01 KiB | 740.00 KiB/s, done.
Resolving deltas: 100% (192/192), done.
- 独自のプロファイルを登録
グローバルのid以外に会社ブランチでの独自(Local)のプロファイルを設定します。Cloneしたレポジトリに入って設定します。
git config --local user.name "test"
git config --local user.email "test@test.com"
これで独自のプロフィールで作業できます。
[追記]
ideなどを使用する場合にはideのRemote Serverに git@{Host name}.github.com
の感じで設定を変える必要があります。