Gitで複数アカウントを切り替えるために必要なssh設定

記事更新日: 2021/12/12

ライター: ナガヤン

GitLab や GitHub で複数のアカウントを使いたい。そんなときはありませんか?

Git リポジトリのホスティングサービスを使っていると、「仕事と個人」や「複数の仕事」など、複数のアカウントを切り替えて使うケースもあるかと思います。

別のサービスであれば ssh公開鍵を使いまわすこともできますが、同一サービス内では同じ ssh 公開鍵を別のアカウントで登録することはできません。

 

そのため、一般には Git クライアントで ssh公開鍵を切り替えて運用することになるのですが、これにはちょっとしたテクニックが必要です。

本ブログの運営でも GitLab を使っていて、まさにそのようなケースに嵌ったので、実際にどうしたか、どうすべきなのかをご紹介します。

この記事は Git Bash (黒い画面)での操作を前提にしています。

別のツールでの解説がほしい場合は、@search_bankまでお知らせください。

 

ユーザーアカウントに応じて ssh を切り替えて使う方法

ユーザーアカウントに応じた ssh を設定する方法は、次の5ステップです。

  • 各GitLab/GitHubアカウントに対応するssh鍵を作成する
  • 各GitLab/GitHubアカウントに公開鍵を登録する
  • ssh の config に切り替え設定を記載する
  • git の config にssh鍵と対応するユーザー設定をする
  • リポジトリごとに接続アカウント設定をする

以降では説明の都合から、ふだん使うアカウントを「メインアカウント」、それ以外のアカウントを「サブアカウント」とします。

アカウントごとに ssh 鍵を作成する

最初にアカウントごとの ssh 鍵を作成します。

すでにGitLab/GitHubアカウントを持っている場合、.ssh ディレクトリで次のような ssh鍵が確認できます。

$ ls ~/.ssh/

id_rsa id_rsa.pub

「id_rsa」は、RSA暗号のssh鍵のデフォルト名です。「id_rsa」が秘密鍵、「id_rsa.pub」が公開鍵です。

メインアカウントには、「id_rsa.pub」の内容を登録しているはずです。

今回はサブアカウント用に、ssh-keygen コマンドで新しいssh鍵ペアを作成します。

 

ssh-keygen コマンドを実行すると、暗号方式など選ぶことができますが今回は省略します。

次の例では、 id_rsa_sub という鍵を作成しました。

$ ssh-keygen

...

$ ls ~/.ssh/

id_rsa  id_rsa.pub  id_rsa_sub  id_rsa_sub.pub

 

新しいサブアカウントに公開鍵を登録する

ssh鍵を作成したら、サブアカウントに公開鍵(*.pub)を登録します。

ssh公開鍵はテキストファイルなので、 cat コマンドで表示できます。

$ cat ./.ssh/id_rsa_sub.pub

ssh公開鍵の登録は、各サービスのアカウント設定画面から登録できます。

 

ssh の config に切り替え設定を記載する

.ssh ディレクトリの config ファイルにサブアカウント用のssh鍵の設定を記載します。

config ファイルがない場合は作成します。ファイル名は config だけで、拡張子は不要です。

Host gitlab.sub # サブアカウント

  HostName github.com

  User git

  Port 22

  IdentityFile ~/.ssh/id_rsa_sub  # サブアカウント用の鍵

  TCPKeepAlive yes

  IdentitiesOnly yes

 

リポジトリごとに接続アカウント設定をする

サブアカウントを使うリポジトリで、接続アカウントの設定をします。

まずはリポジトリのアカウントをサブアカウントにするため、 git config でユーザー情報を設定します。

$ git config --local user.name {ユーザー名}

$ git config --local user.email {メールアドレス}

続けて、リモート接続の設定をサブアカウントの内容に変更します。

git remote コマンドで表示される ホスト名(下線部)を、config ファイルに設定したサブアカウントの設定名で登録し直します。

$ git remote -v

origin  git@gitlab.com:username/repository_name.git (fetch)

origin  git@gitlab.com:username/repository_name.git (push)

$ git remote set-url origin git@github.sub:username/repository_name.git

以上で、サブアカウントの設定は完了です。

リポジトリで1度設定すればOK。でも、ほかの方法も考えてみよう

リポジトリで一度設定することで、それ以降はメインアカウントと同様に使うことができます。

ただ、リポジトリごとに設定する手間を考えると、VMなどで開発環境を切り分ける方が、使い勝手は良いかもしれませんね。

 

ちなみに、GitHubでは個人での無料アカウントの複数保持は規約で禁止されていますので、その点はご注意ください(企業からアカウントを発行してもらう場合、有償の組織アカウントであれば問題ありません)。

1 人の個人または 1 つの法人が複数の無料「アカウント」を保持することはできません (コンピュータアカウントも制御することを選択した場合、それは問題ありませんが、それはコンピュータの実行にのみ使用できます)。

引用元:GitHub利用規約「B. アカウント利用規約」「3. アカウントの要件」

 

この記事を書いたライター

ナガヤン

著者プロフィール

こんにちは、SEライターのナガヤンです!
サーチバンクをご覧いただき、ありがとうございます。

サーチバンクでは、エンジニア中心のメンバーで、私たちだからこそできる、べんりで楽しくなる情報を発信していきます!

これからの働き方を考えるメディア「JobTier」にて、対談記事を書いていただきました!

この記事に関連するラベル

ページトップへ