Githubの複数アカウントをsshで使用する時の設定とプロジェクト毎のconfigの設定
仕事とプライベートのGithubアカウントを持っている方は多いと思います。
1つのPCで仕事用のGithubとプライベート用のGithubをsshで使用するには、アカウント毎に公開鍵の設定が必要です。
なので、今回は、既に公開鍵を登録してあるGithubを所有し、別のGithubアカウントでもsshを行いたい場合の設定方法について書きます。
新しい公開鍵、秘密鍵の作成
~/.ssh
のディレクトリを見てみましょう。既に一つ目のGithubの時に作成したid_rsa
とid_rsa.pub
があると思います。
$ ls ~/.ssh id_rsa id_rsa.pub
ここに新しい別名の公開鍵と秘密鍵を作成します。
$ cd ~/.ssh $ ssh-keygen -t rsa -C "メールアドレス" -f "鍵のファイル名"
例えば鍵のファイル名をprivate_id_rsa
として作成します。ディレクトリを見ると
$ ls ~/.ssh id_rsa id_rsa.pub private_id_rsa private_id_rsa.pub
作成されました。
作成した公開鍵のGithubへの登録
作成した公開鍵を使用するGithubへ登録して下さい。
今回の例ならprivate_id_rsa.pub
の中身を全てコピーして登録して下さい。コマンドでコピーする場合は、
$ pbcopy < ~/.ssh/github_private_rsa.pub
コピーした内容をGithubのSSH keysに追加し登録して下さい。
~/.ssh/configにHostの指定
次にHostの指定を ~/.ssh/config
に書きます。config
がない場合は新しく作って下さい。
Host <ホスト名> User git Port 22 HostName github.com IdentityFile <作成した秘密鍵へのパス> TCPKeepAlive yes IdentitiesOnly yes
今回の例の場合、このようになります。
Host github-private User git Port 22 HostName github.com IdentityFile ~/.ssh/github_private_id_rsa TCPKeepAlive yes IdentitiesOnly yes
記述した内容が正しいか、接続テストをします。
$ ssh -T <ホスト名>
今回の例の場合、
$ ssh -T github-private Hi ◯ ◯ ◯ ! You've successfully authenticated, but GitHub does not provide shell access.
というようにメッセージが返ってきたら成功です。途中質問されたらyes
を打ち込んで進めて下さい。
設定したHostでcloneする
設定したHostを使用して、clone
をします。
git@<設定したホスト名>:<Githubアカウント名>/<対象リポジトリ名>.git
例えば、先ほど設定したホスト名と、アカウント名がhoge
で、test
リポジトリをclone
するとした場合、
$ git@github-private:hoge/test.git
となります。
これで、以降は通常通りpull
やpush
などを新しい鍵で行えるようになります。
プロジェクト毎のconfigの設定
最初にGitをインストールした際に、大抵
git config --global user.name "ユーザー名" git config --global user.email "メールアドレス"
と設定したと思います。一つのアカウントを使用しているのなら問題ないのですが、
複数アカウントを使用していると、プライベートの時は別のユーザー名とメールアドレスを使いたいと思います。
その場合は、対象のリポジトリのルートに移動して、
git config --local user.name "新ユーザー名" git config --local user.email "新メールアドレス"
とすると、そのリポジトリではそのconfigの設定でコミットが出来るようになります!
例えば、testリポジトリのユーザーを変えるとしたら、
$ cd ~/test $ git config --local user.name "hoge" $ git config --local user.email "hoge@test_test_test123.com" $ git config -l --local core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true core.ignorecase=true core.precomposeunicode=true user.name=hoge user.email=hoge@test_test_test123.com
と変わっていることが分かります。
設定を変えたい場合は、やってみて下さい。
- 作者: 松下雅和,船ヶ山慶,平木聡,土橋林太郎,三上丈晴
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2014/04/09
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (6件) を見る