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 Push
IdentityFile
とUser
の両方の設定を同じHost
に設定します。出力は、最後の構成と同じです。
リモートがそうであるので、gitは自動的にホスト「github.com」を検索すると思います。ホストはあなたが好きなものにすることができると言われています( https://stackoverflow.com/a/3828682 )。特定のリポジトリを使用する必要があるssh構成からどのホストを変更する方法はありますか?
〜/ .ssh/configからこれを解決できれば理想的です。
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
よりも優先されます。