web-dev-qa-db-ja.com

複数のSSHキーを使用する方法

GitHubユーザー、

私はgithubの初心者で、gitのセットアップに問題があります。 githubに異なるユーザーの2つのアカウントがあり、システムにgitを2回セットアップしました

最初/。sshフォルダー(通常どおり)(最初のアカウントでコピーしたid_rsaを含む)
2番目/。ssh/newフォルダー(2番目のアカウントにコピーされたid_rsaを含む)

プッシュ時に、sshキーを切り替えるにはどうすればよいですか?

私が2番目のアカウントをプッシュしたい場合、.ssh/newの代わりに.sshキーを使用し、エラーが発生するためです。

私がここで何か間違っていることが理解されたら、私を正してください。

ありがとう。

32
Arun Rana

(私はこれを重複の可能性があるとして閉じるように投票しましたが、とにかく同様の回答を追加することもできます。)

SSHトランスポートを使用する場合、GitHubは、認証に使用するSSHキーに基づいてユーザーとして識別します。したがって、gitが1つのリポジトリに1つのSSHキーを使用し、もう1つのリポジトリに別のSSHキーを使用していることを確認する必要があります。

私はそれを仮定します:

  1. _user1_というGitHubアカウントがあり、そのアカウントにローカル秘密鍵_/home/whoever/.ssh/id_rsa_に対応する公開鍵を追加しました。 _user1_としてアクセスしたいリポジトリがGitHubの_user1/whatever_であるとします。
  2. _user2_という2番目のGitHubアカウントがあり、そのアカウントにローカル秘密鍵_/home/whoever/.ssh/new/id_rsa_に対応する公開鍵を追加しました。 _user2_としてアクセスするリポジトリがGitHubの_user2/whatever_であるとします。

これに対処する最も簡単な方法は、リポジトリごとに新しい「リモート」(つまり、リモートリポジトリのニックネーム)を作成することです。この場合、ホスト名は各リモートのURLにあり、実際には_~/.ssh/config_。 (その構成ファイルが存在しない場合は、作成する必要があります。)

たとえば、_~/.ssh/config_ファイルの1つのエントリは次のようになります。

_Host github-as-user1
  HostName github.com
  User git
  IdentityFile /home/whoever/.ssh/id_rsa
_

次に、_gh-user1_というリモートを追加できます。

_git remote add gh-user1 git@github-as-user1:user1/whatever.git
_

...次に、masterブランチを_user1/whatever_キーを使用してGitHubのリポジトリ_~/.ssh/id_rsa_にプッシュする場合は、次のようにします。

_git Push gh-user1 master
_

他のユーザー(_user2_)として2番目のリポジトリにプッシュするには、2番目のエイリアスを_~/.ssh/config_ファイルに追加する必要があります。例えば:

_Host gh-as-user2
  HostName github.com
  User git
  IdentityFile /home/whoever/.ssh/new/id_rsa
_

次に、別のユーザーとしてその2番目のリポジトリーにプッシュするには、次のようにします。

_git Push gh-user2 master
_
47
Mark Longair