複数のアカウントで GitHubを使おう

ローカル環境で複数のアカウントを使用する場合、SSHキーまたはHTTPSの認証情報を設定する必要があります。SSHキーの場合は、新しいキーペアを生成し、それを新しいアカウントに関連付けます。

SSHキーの生成

RSA(Rivest-Shamir-Adleman)非対称暗号アルゴリズムを使用して公開鍵と秘密鍵のSSHキーペアを生成します。
公開鍵は暗号化に使用され、秘密鍵は復号化に使用されます。
.sshディレクトリがない場合は作成してください。

mkdir ~/.ssh
cd ~/.ssh
ssh-keygen -t rsa -C user1@hoge.com -f user1
ssh-keygen -t rsa -C user2@hoge.com -f user2
  • -t rsa: RSAアルゴリズムを使用して鍵ペアを生成します。このオプションを指定することで、RSAアルゴリズムが選択されます。

  • -C user1@hoge.com: 鍵のコメントを指定します。ここではuser1@hoge.comが指定されています。コメントは公開鍵の一部として保存され、特定の鍵がどの目的やユーザーに関連付けられているかを識別するために使用されます。

  • -f user1: 生成される鍵のファイル名を指定します。ここではuser1というファイル名が指定されています。-fオプションを使用することで、デフォルトのファイル名(id_rsaid_rsa.pubなど)と異なる名前を指定することができます。

SSHの設定(~/.ssh/config)

SSH接続のために、~/.ssh/configファイルを使用して複数のGitHubアカウントを設定することができます。
config ファイルがない場合は作成してください。

touch ~/.ssh/config
#user1アカウント
Host github-user1 #任意
  HostName github.com
  IdentityFile ~/.ssh/user1 
  User git
  TCPKeepAlive yes
  IdentitiesOnly yes

#user2アカウント
Host github-user2 #任意
  HostName github.com
  IdentityFile ~/.ssh/user2
  User git
  TCPKeepAlive yes
  IdentitiesOnly yes


  • Host :ホストのエイリアスを設定します。この場合は、github-user1という名前のエイリアスが使用されます。任意の名前を指定できます。

  • HostName : 接続先のホスト名を指定します。ここではGitHubのホスト名であるgithub.comが指定されています。

  • IdentityFile : 秘密鍵ファイルのパスを指定します。この行では、~/.ssh/user1というパスが指定されています。指定されたファイルが秘密鍵として使用されます。

  • User : 接続時のユーザー名を指定します。

  • TCPKeepAlive : TCP接続のKeep-Aliveを有効にします。これにより、接続がアイドル状態の間に切断されるのを防ぎます。

  • IdentitiesOnly : 鍵の選択を秘密鍵のみに制限します。他の公開鍵を試すことはしません。

GitHub アカウントへの新しい SSH キーの追加

こちらを参照して追加してください。

SSH接続テスト

接続先のホストエントリ名(エイリアス)を指定して接続を確認してみよう

ssh -T github-user1
ssh -T github-user2

このコマンドの目的は、GitHubへのSSH接続が正常に確立されるかどうかを確認することです。接続が成功した場合は、GitHubからのメッセージが表示されます。例えば、「Hi username! You've successfully authenticated」といったメッセージが表示されれば、接続が成功していることを意味します。

このコマンドを使用して接続の確認を行うことで、設定が正しく行われ、指定したホストエントリに対して正常なSSH接続が確立できることを確認することができます。

git の remote.origin.url の設定(.git/config)

# user1
git remote add origin git@github-user1:user1/repository.git

# user2
git remote add origin git@github-user2:user2/repository.git

git@github-user1: SSH接続に使用するリモートホストのアドレスです。ここでは、github-user1というエイリアスが設定されており、SSHキー認証を使用して接続を行います。

user1/repository.git: リモートリポジトリのパスです。user1はGitHubアカウント名、repository.gitはリポジトリ名です。

上記のコマンドを実行すると、リポジトリにoriginという名前で新しいリモートリポジトリが追加されます。このリモートリポジトリは、github-user1 / github-user2 というエイリアスに関連付けられたuser1/repository.git / user2/repository というGitHub上のリポジトリを指します。

このコマンドを使用することで、ローカルのGitリポジトリとリモートのGitHubリポジトリを関連付けることができます。その後、git pushなどのコマンドを使用して、ローカルの変更をリモートリポジトリにプッシュすることができます。

git の user.name / user.emailの設定

リポジトリごとに名前とメールアドレスの設定をしましょう。

cd user1/repository
git config --local user.name user1
git config --local user.email user1@hoge.com

cd user2/repository
git config --local user.name user2
git config --local user.email user2@hoge.com

Errorまとめ

The authenticity of host 'hoge.com' can't be established

このエラーメッセージは、SSHがリモートホスト(hoge.com)のホストキー(公開鍵)を初めて検証する際に表示されるものです。ホストキーの検証はセキュリティ上の重要なステップで、SSH接続のセキュリティを確保するために行われます。

このエラーメッセージを解決するには、ホストキーを信頼できるものとしてSSHに追加する必要があります。具体的には、次の手順を実行できます。

  1. まず、エラーメッセージが表示されたときに「yes」と入力してホストキーを信頼します。この操作により、リモートホストのホストキーがローカルに追加されます。

  2. ホストキーが正しく追加されると、次回からはホストキーの検証が行われずにSSH接続が許可されるはずです。

ただし、セキュリティの観点から、ホストキーを手動で検証することも重要です。ホストキーが変更された場合、SSH接続が中間者攻撃に対して脆弱になる可能性があるためです。ホストキーが変更された場合は、適切な手順でホストキーを更新する必要があります。

更新されたホストキーを手動で追加するには、次のようにします。

  1. リモートホストから新しいホストキーを取得します。これは通常、ホスト管理者から提供されます。

  2. 新しいホストキーを ~/.ssh/known_hosts ファイルに追加します。次のコマンドを使用できます。

ssh-keygen -R hoge.com
ssh-keyscan hoge.com >> ~/.ssh/known_hosts

これにより、正しいホストキーが設定され、SSH接続時にエラーが解決されるはずです。セキュリティを確保するために、ホストキーを手動で追加することをお勧めします。


この記事が気に入ったらサポートをしてみませんか?