다중 GitHub 계정 및 SSH 구성
서로 다른 두 개의 SSH 키 / GitHub 계정을 함께 사용하는 데 문제가 있습니다. 다음과 같은 설정이 있습니다.
하나의 계정으로 리포지토리에 액세스 git@github.com:accountname
다른 계정에서 액세스 할 수있는 리포지토리 git@github.com:anotheraccount
각 계정에는 고유 한 SSH 키가 있습니다. 두 SSH 키가 모두 추가되었으며 구성 파일을 만들었습니다. 그래도 구성 파일이 정확하지 않다고 생각합니다. 사용하여 액세스 한 repos git@github.com:accountname
가 사용 id_rsa
하고 git@github.com:anotheraccount
사용해야 한다고 지정하는 방법을 잘 모르겠습니다 id_rsa_anotheraccount
.
Andy Lester의 답변은 정확하지만이 작업을 수행하는 데 필요한 중요한 추가 단계를 찾았습니다. 개인용과 업무용의 두 가지 프로파일을 설정하려고 할 때 ~/.ssh/config
대략 다음과 같습니다.
Host me.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/me_rsa
Host work.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/work_rsa
내가 할 때까지 내 직장 프로필을받지 못했습니다 ssh-add ~/.ssh/work_rsa
. 그 후 github에 대한 연결은 올바른 프로파일을 사용했습니다. 이전에는 첫 번째 공개 키를 기본값으로 사용했습니다.
들어 당신의 인증 에이전트에 연결 열 수 없습니다 사용 ssh-add
,
확인 : https://stackoverflow.com/a/17695338/1760313
최근에이 작업을 수행해야했고 정보를한데 모으기 위해이 모든 답변과 의견을 검토해야했기 때문에 편의를 위해 한 곳에 게시하겠습니다.
1 단계 : ssh 키
필요한 키 쌍을 만듭니다. 이 예제에서는 기본 / 원본 'id_rsa'(기본값)와 새 이름 인 'id_rsa-work'를 지정했습니다.
ssh-keygen -t rsa -C "stefano@work.com"
2 단계 : ssh config ~ / .ssh / config
를 작성 / 수정하여 여러 ssh 프로파일을 설정하십시오 . 약간 다른 '호스트'값을 참고하십시오.
# Default GitHub
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
# Work GitHub
Host work.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_work
3 단계 : ssh-add
이 작업을 수행하거나 수행하지 않아도됩니다. 확인하려면 다음을 실행하여 신원 지문을 나열하십시오.
$ ssh-add -l
2048 1f:1a:b8:69:cd:e3:ee:68:e1:c4:da:d8:96:7c:d0:6f stefano (RSA)
2048 6d:65:b9:3b:ff:9c:5a:54:1c:2f:6a:f7:44:03:84:3f stefano@work.com (RSA)
항목이 없으면 다음을 실행하십시오.
ssh-add ~/.ssh/id_rsa_work
4 단계 :
테스트이 작업을 모두 올바르게 수행했는지 테스트 하려면 다음 빠른 확인을 제안합니다.
$ ssh -T git@github.com
Hi stefano! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@work.github.com
Hi stefano! You've successfully authenticated, but GitHub does not provide shell access.
사용하려는 키 / ID에 따라 호스트 이름 (github / work.github)을 변경해야합니다. 그러나 이제는 잘 가야합니다! :)
alice
2 개 이상의 개인 저장소가있는 github.com 사용자를 가정 해 봅시다 repoN
. 이 예제에서는 두 개의 리포지토리 만 사용 repo1
하고repo2
https://github.com/alice/repo1
https://github.com/alice/repo2
서버 또는 여러 서버에서 암호를 입력하지 않고 이러한 저장소에서 가져와야합니다. git pull origin master
예를 들어, 암호를 요구하지 않고이 작업을 수행 하려고합니다.
ssh-agent를 다루는 것을 좋아하지 않고, ~/.ssh/config
ssh 클라이언트가 호스트 이름과 사용자 이름에 따라 사용할 개인 키를 알 수있는 파일 에 대해 발견했거나 지금 발견 하고 있습니다. 이:
Host github.com
HostName github.com
User git
IdentityFile /home/alice/.ssh/alice_github.id_rsa
IdentitiesOnly yes
계속해서 (alice_github.id_rsa, alice_github.id_rsa.pub)
키 쌍을 생성 한 다음 리포지토리 .git/config
파일로 이동하여 리모컨의 URL을 다음과 같이 수정 origin
했습니다.
[remote "origin"]
url = "ssh://git@github.com/alice/repo1.git"
마지막으로 저장소 Settings > Deploy keys
섹션으로 이동하여 내용을 추가했습니다.alice_github.id_rsa.pub
이 시점에서 git pull origin master
문제없이 비밀번호를 입력하지 않아도됩니다.
그러나 두 번째 저장소는 어떻습니까?
따라서 본능은 해당 키를 잡고 repo2
배포 키에 추가하는 것이지만 github.com은 오류가 발생하여 키가 이미 사용 중임을 알려줍니다.
이제 ssh-keygen -t rsa -C "alice@alice.com"
암호없이 사용하여 다른 키를 생성 하여 엉망이되지 않도록 키의 이름을 다음과 같이 지정하십시오.
repo1
키 페어 :(repo1.alice_github.id_rsa, repo1.alice_github.id_rsa.pub)
repo2
키 페어 :(repo2.alice_github.id_rsa, repo2.alice_github.id_rsa.pub)
이제 repo2
github.com의 '키 배포'구성 에 새 공개 키 를 넣었지만 이제는 ssh 문제가 있습니다.
저장소가 동일한 github.com
도메인 에서 호스팅되는 경우 ssh가 사용할 키를 어떻게 알 수 있습니까?
귀하의 .ssh/config
파일 점 github.com
과 그것의 시간이 풀을 할 때 사용할 키 모른다.
그래서 github.com에서 트릭을 찾았습니다. 다른 github.com 하위 도메인에있는 각 저장소의 삶, 이러한 경우에, 그들이 될 것이라고 당신은 ssh 클라이언트를 알 수 repo1.github.com
및repo2.github.com
먼저 .git/config
repo 클론 의 파일을 편집하는 것이 다음과 같습니다.
repo1의 경우
[remote "origin"]
url = "ssh://git@repo1.github.com/alice/repo1.git"
repo2의 경우
[remote "origin"]
url = "ssh://git@repo2.github.com/alice/repo2.git"
그런 다음 .ssh/config
파일에서 각 하위 도메인에 대한 구성을 입력 할 수 있습니다. :)
Host repo1.github.com
HostName github.com
User git
IdentityFile /home/alice/.ssh/repo1.alice_github.id_rsa
IdentitiesOnly yes
Host repo2.github.com
HostName github.com
User git
IdentityFile /home/alice/.ssh/repo2.alice_github.id_rsa
IdentitiesOnly yes
이제 git pull origin master
두 리포지토리에서 암호를 입력하지 않아도됩니다.
여러 대의 컴퓨터가있는 경우 각 컴퓨터에 키를 복사하여 재사용 할 수 있지만 다리 작업을 수행하여 컴퓨터 당 1 개의 키를 생성하고 리포하는 것이 좋습니다. 더 많은 키를 처리 할 수 있지만 손상 될 경우 취약성이 줄어 듭니다.
github에 2 개의 계정이 있으며 여기에 linux
작동하도록하기 위해 수행 한 작업이 있습니다.
열쇠
- 를 통해 2 쌍의 rsa 키
ssh-keygen
를 만들어 이름을 올바르게 지정하면보다 쉽게 사용할 수 있습니다. - 를 통해 로컬 에이전트에 개인 키 추가
ssh-add path_to_private_key
- 각 github 계정에 대해 (고유 한) 공개 키를 업로드하십시오.
구성
~ / .ssh / config
Host github-kc
Hostname github.com
User git
IdentityFile ~/.ssh/github_rsa_kc.pub
# LogLevel DEBUG3
Host github-abc
Hostname github.com
User git
IdentityFile ~/.ssh/github_rsa_abc.pub
# LogLevel DEBUG3
repo에 대한 원격 URL을 설정하십시오.
호스트의 리포지토리
github-kc
:git remote set-url origin git@github-kc:kuchaguangjie/pygtrans.git
호스트의 리포지토리
github-abc
:git remote set-url origin git@github-abc:abcdefg/yyy.git
설명
의 옵션 ~/.ssh/config
:
Host
github- <identify_specific_user>
호스트는 호스트와 계정을 식별 할 수있는 임의의 값일 수 있습니다. 실제 호스트 일 필요는 없습니다. 예를 들어github-kc
로컬 노트북의 github에서 내 계정 중 하나를 식별 할 수 있습니다.git repo에 대한 원격 URL을 설정할 때 이것은 뒤에 넣을 값
git@
입니다. 즉, repo가 호스트에 매핑되는 방식입니다.git remote set-url origin git@github-kc:kuchaguangjie/pygtrans.git
- [다음은 하위 옵션입니다
Host
] Hostname
실제 호스트 이름을 지정하고github.com
github에 사용하십시오.User
git
사용자는 항상git
github입니다.IdentityFile
사용할 키를 지정하고 경로를 공개 키로 지정하십시오.LogLevel
디버그 할 로그 레벨을 지정하십시오 (문제DEBUG3
가있는 경우 가장 자세한 정보 제공).
에서 IdentityFile
매개 변수를 사용 하십시오 ~/.ssh/config
.
Host github.com
HostName github.com
IdentityFile ~/.ssh/github.rsa
User petdance
필자의 경우 위의 솔루션 중 어느 것도 내 문제를 해결하지 못했지만 ssh-agent는 해결합니다. 기본적으로 다음을 수행했습니다.
아래 표시된 ssh-keygen을 사용하여 키 페어를 생성하십시오. 이 (이 예에서는 키 쌍 생성
.\keyfile
및.\keyfile.pub
)ssh-keygen -t rsa -b 4096 -C "yourname@yourdomain" -f keyfile
keyfile.pub
자식 공급자에 업로드- 머신에서 ssh-agent를 시작하십시오 (
ps -ef | grep ssh-agent
이미 실행 중인지 확인할 수 있습니다 ) ssh-add .\keyfile
자격 증명을 추가하기 위해 실행- 이제 당신은 실행할 수 있습니다
git clone git@provider:username/project.git
모든 단계를 이해하기 위해 많은 시간을 보냈습니다. 단계별로 설명해 드리겠습니다.
- 을 사용하여 새 신원 파일을 만듭니다
ssh-keygen -t rsa
.proj1.id_rsa
암호를 필요로하지 않기 때문에 대안을 제시 하고 의심의 여지없이 공격하십시오. 에 새 섹션 추가
.ssh/config
:Host proj1.github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/proj1.id_rsa
첫 번째 섹션을 고려하고 proj1.github.com
나중에 다시 섹션으로 돌아갑니다.
- ssh 에이전트에 ID 추가
ssh-add ~/.ssh/proj1.id_rsa
- 내가 처음 엉망인 것은-이제 proj1 저장소를 복제하려고 할 때
proj1.github.com
(정확히 구성 파일의 호스트)를 사용하여 수행합니다 .git clone git@proj1.github.com
.
호스트를 망치지 마십시오
나는 사용했다
Host github.com
HostName github.com
IdentityFile ~/.ssh/github_rsa
User abc@gmail.com
괜찮 았어요.
다른 사용자 이름에 대한 다른 rsa 키에 대해서는 .ssh / config 파일에서 위 설정을 사용하십시오.
@stefano의 답변을 보완 -f
하기 위해 다른 계정에 새 SSH 키를 생성 할 때 명령을 사용하는 것이 좋습니다 .
ssh-keygen -t rsa -f ~/.ssh/id_rsa_work -C "your@mail.com"
이후 id_rsa_work
파일 경로에 존재하지 않는 ~/.ssh/
, 나는이 파일을 수동으로 작성하고 그것을 작동하지 않습니다 :(
다른 모든 답변에서 제안한 것처럼 ssh 구성 파일을 편집하는 것보다 더 간단한 대안은 다른 (예 : 기본값이 아닌) ssh 키를 사용하도록 개별 저장소를 구성하는 것입니다.
다른 키를 사용하려는 저장소 내에서 다음을 실행하십시오.
git config core.sshCommand 'ssh -i ~/.ssh/id_rsa_anotheraccount'
그리고 다음을 실행하여 키가 ssh-agent에 추가되었는지 확인하십시오.
ssh-add ~/.ssh/id_rsa_anotheraccount
위 명령은 현재 세션의 ssh-agent에만 키를 추가한다는 점에 유의하십시오. 이것이 영원히 작동하게하려면 ssh-agent에 "영구적으로"추가해야합니다. 예를 들어 우분투 와 OSX에 대해하는 방법이 있습니다 .
전역 git 구성 및 조건부 포함을 사용 하여이 방법을 여러 저장소로 확장 할 수도 있어야합니다 ( 예 참조 ).
여기에 내가 다루는 기술을 게시했습니다.
참고 URL : https://stackoverflow.com/questions/3225862/multiple-github-accounts-ssh-config
'IT story' 카테고리의 다른 글
소켓 '/var/lib/mysql/mysql.sock'을 통해 로컬 MySQL 서버에 연결할 수 없습니다 (2). (0) | 2020.04.09 |
---|---|
코드에서 안드로이드 세트 스타일 (0) | 2020.04.09 |
스택 오버플로는 SEO 친화적 인 URL을 어떻게 생성합니까? (0) | 2020.04.08 |
Bash에서 -z는 무엇을 의미합니까? (0) | 2020.04.08 |
파이썬에서 "올림"키워드를 사용하는 방법 (0) | 2020.04.08 |