SSH 구성-동일한 호스트이지만 다른 키와 사용자 이름


31

두 개의 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모두 IdentityFileUser같은 아래 설정 Host. 출력은 마지막 구성과 동일합니다.

나는 git이 자동으로 호스트 "github.com"을 자동으로 검색한다고 생각합니다. Host는 원하는 모든 것이 될 수 있다고합니다 ( https : //.com/a/3828682 ). ssh 설정에서 특정 repo가 ​​사용해야하는 호스트를 변경하는 방법이 있습니까?

~ / .ssh / config 에서이 문제를 해결할 수 있다면 이상적입니다.

답변:


44

OpenSSH 클라이언트는 Host라인을 섹션 식별자로 사용하고 다른 모든 것은 설정입니다. 에 연결하면 foo@bar.comSSH는 " User foo"을 검색하지 않습니다 . " Host bar.com" 만 검색합니다 .

즉 : 당신은 "이 경우 Host github_username2귀하의 SSH의 설정에서"당신은 사용해야합니다 동일한 호스트를 - 당신의 망할 놈의 리모컨에 github_username2하지 git@github.com.

그러나 이는 인증 실패의 원인이 아닙니다.의 경우 github.comSSH 사용자 이름은 " 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

힘내 구성 :

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

참고 : git예제에서 두 위치 모두에 사용자 이름을 지정했지만 한 번만 지정하면 git@됩니다. Git URL User git에서는 SSH 구성에서 우선 합니다.


2
어떤 경우에는 ssh가 선택된 신원 파일 만 선택하고 기본 설정 / 다른 시도는하지 않도록 IdentitiesOnly=yeshost섹션 을 추가해야 할 수도 있습니다 .
TCB13
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.