働き方

複数のGitHubアカウントをSSH設定ファイルで切り替えて運用する方法

複数のGitHubアカウントをSSH設定ファイルで切り替えて運用する方法

「複数のGitHubアカウントを運用することになった」
「プッシュ先を間違えることが怖い」
「いちいちアカウントを切り替えるのが面倒」

複数のGitHubアカウントを運用することになった場合、面倒ごとがたくさん思い浮かびますよね。

今回は、「1コマンド」でGitHubアカウントを切り替えて、手間なく安全にgitコマンドを使う方法をご紹介します。

なお、この切り替え方法は、GitHubアカウントだけでなく、AWSのEC2接続先を切り替える際にも応用できます

結論から言ってしまうと、以下の手順で設定すると、アカウントの切り替えができるようになります。

複数アカウントを運用するための設定手順
  1. 各GitHubアカウント用のSSH鍵を作成する
  2. SSH設定ファイルを記述する
  3. GitHubに公開鍵を登録する

それぞれの詳しい手順を解説していきます。
※記事内で使っているコマンドはMacユーザー向けです。

GitHub用のSSH鍵を生成する

まずはローカルでGitHubアカウント用のSSH鍵を作ります。

手順の流れは以下の通りです。

SSH鍵生成手順
  1. .sshフォルダへ移動
  2. 念のため、バックアップを取っておく
  3. ssh-keygenコマンドを実行する
  4. ファイル名を変更する
  5. パスフレーズは入力せずEnter * 2

1つずつ解説します。

まずは.sshフォルダに移動して、既存のSSH鍵ファイルがないか確認しましょう。

cd ~/.ssh
ls -l
# 実行結果内にid_rsaやid_rsa.pubなどがあった場合、以下のコマンドでバックアップを取得しておく。
cp id_rsa id_rsa_bk
cp id_rsa.pub id_rsa_bk.pub

 

既存ファイルがあった場合、この後の手順で誤って上書きしてしまった時のために、バックアップを取得しておいてくださいね。

次に、以下のコマンドでSSH鍵を生成します。
“your_email@example.com”には、対象のGitHubアカウントの登録メールアドレスを入力してください。

# 今回はid_rsa_primaryというファイル名にしましょう。
Enter file in which to save the key (/Users/deatiger/.ssh/id_rsa): 

 

以下のようにパスフレーズを聞かれますが、何も入力せずにEnterを2回押しましょう。

Enter passphrase (empty for no passphrase):

.sshフォルダ内に、”id_rsa_primary”と”id_rsa_primary.pub”というファイルが生成されたはずです。

前者が秘密鍵で、後者が公開鍵です。

秘密鍵は絶対に外部に漏らさないようにしましょう。

ここまでで、SSH鍵の生成は完了です。

今回は複数アカウントを運用する方法なので、もう1アカウント分、上記の手順を繰り返してください。

2アカウント目の鍵ファイル名はid_rsa_secondaryとします。
ssh-keygenで指定するメールアドレスも2アカウント目のものにしてくださいね。

SSH設定ファイルを作成する

次に、SSH設定ファイルを作って、そこに記述していきます。

# viコマンドでファイルを作成&編集開始
vi ~/.ssh/config

 

以下の内容をコピーして貼り付けてください。

~/.ssh/config

Host github_primary
    User git
    Port 22
    HostName github.com
    IdentityFile ~/.ssh/github_primary_id_rsa
    TCPKeepAlive yes
    IdentitiesOnly yes

Host github_secondary
    User git
    Port 22
    HostName github.com
    IdentityFile ~/.ssh/github_secondary_id_rsa
    TCPKeepAlive yes
    IdentitiesOnly yes

 

escapeキー→「:wq」を入力して編集を完了させましょう。

作成したSSH公開鍵をGitHubに登録する

次は、作成したSSH公開鍵をGitHubに登録します。

まずは以下の手順で公開鍵の登録画面までいきます。

公開鍵登録画面までの手順
  1. GitHubにアクセス
  2. 右上のアイコンから[Settings]をクリック
  3. [SSH and GPC Keys]タブを選択
  4. [New SSH Key]ボタンをクリック

以下のような画面にたどり着いたはずです。

作成したSSH公開鍵をGitHubに登録する

次に、ターミナルで以下コマンドを実行します。

# id_rsa_primaryの公開鍵の中身を確認する場合
cat ~/.ssh/id_rsa_primary.pub

 

表示された公開鍵ファイルの中身をコピーします。

そして、GitHubのWebページに戻り、[key]に貼り付けます。
[title]は適当にわかりやすい名前をつけておきましょう。

[Add SSH Key]を押したら登録完了です。

2アカウント目も同様の手順で公開鍵を登録しておいてください。

sshコマンドでGitHubアカウントを切り替える

ここまでの手順で設定は完了したので、実際にsshコマンドでGitHubアカウントを切り替えてみましょう。

configファイルに記載したHost名を、sshコマンドに続けて指定して実行します。

# 1つ目のアカウント(github_primary)を使う時
ssh github_primary
# 2つ目のアカウント(github_secondary)を使う時
ssh github_secondary

任意のgitコマンドが切り替えたアカウントで実行されるようになります。

SSHで切り替えてもgit cloneで権限エラーが出る場合の対処方法

ただし、git cloneするときは注意が必要です。単純にgit cloneコマンドを打っても以下のようなエラーが出るはずです。

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

 

git cloneするときは、どのアカウントを使うのか明示的に指定する必要があります。

Host名がgithub_secondaryのアカウントでgit cloneする場合の例が以下となります。

git clone git@github_secondary:REPOSITORY_PATH/REPOSITORY.git

 

以上で、複数GitHubアカウントをSSHで切り替えて運用する方法の解説は終了です。

記事の内容がお役にたったなら、ぜひシェアしていただけると嬉しいです。

最後に記事の内容をまとめておきます。

ここにタイトルを入力
  1. 複数のGitHubアカウントはSSHの設定で簡単に切り替えられる
  2. 各GitHubアカウント用のSSH鍵を作る
  3. 生成した公開鍵をGitHub上で登録する
  4. SSHのconfigファイルを記述する
  5. git cloneするときは明示的にアカウントの指定が必要
ABOUT ME
稲垣 貴映
サーバーエンジニア兼Webフロントエンジニア。 新卒で独立系SIerに入社後、金融系システム基盤の構築・運用を3年間経験。 プログラミングを独学していた頃に、CEOの馬谷が開講していたSwiftスクールに通い、2019年9月に入社。 趣味はブラジル音楽の演奏。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA