ツテなしフリーランス日誌

ツテが全く無いまま会社を辞め、我が道を行くフリーランスエンジニアのブログです



Githubの複数アカウントをsshで使用する時の設定とプロジェクト毎のconfigの設定

仕事とプライベートのGithubアカウントを持っている方は多いと思います。

1つのPCで仕事用のGithubとプライベート用のGithubsshで使用するには、アカウント毎に公開鍵の設定が必要です。

なので、今回は、既に公開鍵を登録してあるGithubを所有し、別のGithubアカウントでもsshを行いたい場合の設定方法について書きます。

新しい公開鍵、秘密鍵の作成

~/.sshのディレクトリを見てみましょう。既に一つ目のGithubの時に作成したid_rsaid_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

  

コピーした内容をGithubSSH 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

となります。 これで、以降は通常通りpullpushなどを新しい鍵で行えるようになります。

  

プロジェクト毎の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

  

と変わっていることが分かります。

設定を変えたい場合は、やってみて下さい。

  

開発効率をUPする Git逆引き入門

開発効率をUPする Git逆引き入門

  • 作者: 松下雅和,船ヶ山慶,平木聡,土橋林太郎,三上丈晴
  • 出版社/メーカー: シーアンドアール研究所
  • 発売日: 2014/04/09
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (6件) を見る