SSH構成-同じホストで異なるキーとユーザー名


31

2つのGitHubアカウントを設定しましたが、sshキーを正しく動作させることができません。さまざまな設定を試しました。


Host github_username1
    HostName github.com
    IdentityFile ~/.ssh/rsa_1
    User username1
Host github_username2
    HostName github.com
    IdentityFile ~/.ssh/rsa_2
    User username2

git push

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

username1で機能します1:

Host github.com
    HostName github.com
    IdentityFile ~/.ssh/rsa_1
    User username1
Host github.com
    HostName github.com
    IdentityFile ~/.ssh/rsa_2
    User username2

git push username2のレポで:

ERROR: Permission to username2/repo.git denied to username1.
fatal: The remote end hung up unexpectedly

私はまた、同じ設定でgit push両方IdentityFileUser設定を試しましたHost。出力は、最後の構成と同じです。

リモートはそのようなものなので、gitは自動的にホスト "github.com"を検索すると思います。Hostは任意のものにできます(/programming//a/3828682)。特定のレポが使用するssh configのホストを変更する方法はありますか?

〜/ .ssh / configだけでこれを解決できれば理想的です。

回答:


44

OpenSSHクライアントはHostセクション識別子として行のみを使用し、その他はすべて設定です。に接続するとfoo@bar.com、SSHは「User foo」を検索しません。「Host bar.com」のみを検索します。

言い換えれば、あなたは「持っている場合はHost github_username2、あなたのSSHの設定で」、あなたは使用する必要があり、同じホストを -あなたのGitのリモコンではgithub_username2、ありませんgit@github.com

ただし、それが認証エラーの原因ではありません。の場合github.com、SSH ユーザー名は " git"でなければなりません。GitHub SSHサーバーは、SSHキーのみでユーザーを識別します。


正しいSSH構成は次のとおりです。

Host github_username1
    Hostname github.com
    User git
    IdentityFile ~/.ssh/rsa_1
Host github_username2
    Hostname github.com
    User git
    IdentityFile ~/.ssh/rsa_2

Gitの構成:

[remote "origin"]
    url = git@github_username1:username2/repo.git

注:git例では両方の場所でユーザー名を指定しましたが、一度だけ指定する必要がありますgit@。GitURL User gitではSSH構成よりも優先されます。


2
いくつかのケースでは、あなたが追加する必要があるかもしれませんIdentitiesOnly=yesそれぞれにhost... sshが唯一選ばれたIDファイルを選択し、何か他のものを試してみてください/デフォルトでないことを確認するセクション
TCB13
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.