web-dev-qa-db-ja.com

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

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で機能します:

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 PushIdentityFileUserの両方の設定を同じHostに設定します。出力は、最後の構成と同じです。

リモートがそうであるので、gitは自動的にホスト「github.com」を検索すると思います。ホストはあなたが好きなものにすることができると言われています( https://stackoverflow.com/a/3828682 )。特定のリポジトリを使用する必要があるssh構成からどのホストを変更する方法はありますか?

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

33
usr

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

言い換えると、SSH設定に「Host github_username2」がある場合、Gitリモートで同じホストを使用する必要があります– github_username2ではなく[email protected]

ただし、それが認証の失敗の原因ではありません。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ユーザー名を指定しましたが、一度だけ指定する必要があります。GitURLのgit@は、SSH構成のUser gitよりも優先されます。

47
user1686