다른 계정과 호스트로 여러 SSH 키를 사용하는 방법

다른 계정과 호스트로 여러 SSH 키를 사용하는 방법

나는 SSH 키가 여러 개 있고 bitbucket과 github에도 계정이 있습니다. 내가 pull을 사용할 때마다 오류가 발생하는 이유

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

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

:~$ ssh [email protected]
Permission denied (publickey).

이 문제를 어떻게 해결하고 다른 계정에 다른 키를 사용할 수 있나요?

답변1

이것은 모두 웹사이트와 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-agent에 두 ssh 키를 모두 추가했습니다.

bitbucket용 하나와 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의 계정 1개에 2개의 서로 다른 키를 사용하고 있습니다.

이제 특정 계정에 대한 특정 SSH 키를 얻을 수 있도록 사용할 호스트를 git 저장소에 알려야 합니다.

[email protected]/yyyproject.git로 변경git@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은 이렇습니다

[email protected]: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$ 

우리는 서로 다른 호스트에 대해 서로 다른 SSH 키를 식별했습니다. 하나는 git용이고 다른 하나는 bitbucket용입니다. 이제 시스템은 어떤 SSH 키가 어떤 호스트에 사용될지 알 수 있습니다.

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

답변2

나는 ~/.ssh/config다음과 같이 구성합니다.

Host gitlab-as-thuc  
    HostName git.thuc.com
    User git
    IdentityFile ~/.ssh/id_rsa.thuc
    IdentitiesOnly yes

그런 다음 git url에서 실제 도메인 대신 사용자 정의 호스트 이름을 사용하십시오.

git remote add thuc git@gitlab-as-thuc:your-repo.git  

자세한 내용은 여기를 읽어보세요:http://itblog.study.land/how-to-specify-다른-ssh-keys-for-git-push-for-a-given-domain/

관련 정보