複数のアカウントで 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_rsaやid_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に追加する必要があります。具体的には、次の手順を実行できます。
まず、エラーメッセージが表示されたときに「yes」と入力してホストキーを信頼します。この操作により、リモートホストのホストキーがローカルに追加されます。
ホストキーが正しく追加されると、次回からはホストキーの検証が行われずにSSH接続が許可されるはずです。
ただし、セキュリティの観点から、ホストキーを手動で検証することも重要です。ホストキーが変更された場合、SSH接続が中間者攻撃に対して脆弱になる可能性があるためです。ホストキーが変更された場合は、適切な手順でホストキーを更新する必要があります。
更新されたホストキーを手動で追加するには、次のようにします。
リモートホストから新しいホストキーを取得します。これは通常、ホスト管理者から提供されます。
新しいホストキーを ~/.ssh/known_hosts ファイルに追加します。次のコマンドを使用できます。
ssh-keygen -R hoge.com
ssh-keyscan hoge.com >> ~/.ssh/known_hosts
これにより、正しいホストキーが設定され、SSH接続時にエラーが解決されるはずです。セキュリティを確保するために、ホストキーを手動で追加することをお勧めします。
この記事が気に入ったらサポートをしてみませんか?