質問: 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 push identityfileとuserの両方の設定を同じhostに設定します。出力は、最後の構成と同じです。リモートがそうであるので、gitは自動的にホスト「github.com」を検索すると思います。ホストはあなたが好きなものにすることができると言われています( https://stackoverflow.com/a/3828682 )。特定のリポジトリを使用する必要があるssh構成からどのホストを変更する方法はありますか?〜/ .ssh/configからこれを解決できれば理想的です。
回答: opensshクライアントは、セクション識別子としてhost行のみを使用し、その他はすべて設定です。 foo@bar.comに接続すると、sshは「user foo」を検索しません。 「host bar.com」のみが検索されます。言い換えると、ssh設定に「host github_username2」がある場合、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ユーザー名を指定しましたが、一度だけ指定する必要があります。giturlのgit@は、ssh構成のuser gitよりも優先されます。