다른 계정과 호스트에서 여러 ssh 키를 사용하는 방법


21

나는 여러 개의 ssh 키를 가지고 있으며 bitbucket 및 github에 대한 계정도 가지고 있습니다. 풀을 사용할 때 오류가 발생하는 방법

:/var/www/proj$ git pull origin master
conq: repository access denied.
fatal: The remote end hung up unexpectedly

또는 bitbucket 웹 사이트를 ssh하면 공개 키 거부 오류가 발생합니다.

:~$ ssh git@bitbucket.org
Permission denied (publickey).

어떻게하면이 문제를 해결하고 다른 계정으로 다른 키를 사용할 수 있습니까?


답변:


21

이것은 모두 웹 사이트 및 stackoverflow에서 수집되며, ssh를 처음 사용하는 사람에게 도움이되기를 바랍니다.

그래서 당신은 많은 ssh 키를 가질 수 있습니다

~/.ssh$ ls
yyy_id_rsa  yyy_id_rsa.pub  id_rsa  id_rsa.pub  known_hosts

참고 : ssh-agent에 다음을 추가해야하며 아마도 id_rsa가 추가되므로 다른 개인 키를 추가해야합니다

~/.ssh$ ssh-add yyy_id_rsa

이제 ssh 키를 ssh-agent에 모두 추가했습니다.

비트 버킷 하나와 github 하나

그래서 우리는 이와 같은 구성 파일을 만듭니다

~/.ssh$ nano config
Host bit-yyyuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/yyy_id_rsa
User yyyuser

Host bit-xxxuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/id_rsa
User xxxuser

Host git-xxxuser github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa
User xxxuser

참고 : bitbucket에서 2 개의 다른 계정에 github에 대해 2 개의 다른 키를 사용하고 있습니다.

이제 git 저장소에 사용할 호스트를 알려 주어야 특정 계정에 대한 특정 ssh 키를 얻을 수 있습니다

변화 git@bitbucket.orgyyyuser/yyyproject.gitgit@bit-yyyuser:yyyuser/yyyproject.git

프로젝트 폴더에서 원격 URL을 추가하십시오.

/var/www/yyyproject$ git remote add bit git@bit-yyyuser:yyyuser/yyyproject.git

다른 프로젝트에서

/var/www/xxxproject$ git remote add bitt git@bit-xxxuser:xxxuser/xxxproject.git

이제 밀고 당기는 것을 쉽게 사용할 수 있습니다

:/var/www/yyyproject$ git pull bit master
From bit-yyyuser:yyyuser/yyyproject
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/yyyproject$

그리고 다른 프로젝트

/var/www/xxxproject$ git push bitt ver1
To git@bit-xxxuser:xxxuser/xxxproject.git
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/xxxproject$ 

이제 로컬 컴퓨터에 github 프로젝트가 없으므로 프로젝트를 복제해야하지만 복제 할 URL을 약간 변경해야합니다.

우리의 URL은 다음과 같습니다

git@github.com:xxxuser/python.git

특정 키로 복제해야하므로 정의한 호스트로 호스트 이름을 변경하면됩니다.

git@git-xxxuser:xxxuser/python.git

구성 파일에 정의 된대로

이제 복제 할 수 있습니다

:/var/www/us$ git clone git@git-xxxuser:xxxuser/python.git
Cloning into 'python'...
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 75 (delta 18), reused 62 (delta 8)
Receiving objects: 100% (75/75), 6.29 KiB, done.
Resolving deltas: 100% (18/18), done.
:/var/www/us$ 

우리는 다른 호스트, git 및 비트 버킷에 대해 다른 ssh 키를 식별했습니다. 이제 시스템은 어떤 ssh 키를 어떤 호스트와 함께 사용할지를 알고 있습니다.

이제 우리는 쉽게 당기고 밀 수 있습니다.


내 자식 URL이 https를 사용하는 경우 어떻게합니까? 어쨌든 그 일을 할 것인가?
Gelin Luo 2016 년

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.