如何使用具有不同帐户和主机的多个ssh密钥

我有多个ssh密钥,我也有bitbucket和github帐户。 我怎么用拉力它给我错误

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

或者,如果我ssh the bitbucket网站,它给出了错误公钥拒绝

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

如何解决这个问题,并使用不同的帐户使用不同的密钥。

这都是从网站和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个不同的帐户使用2个不同的密钥,为github使用1个不同的密钥。

现在我们需要告诉git存储库使用哪个主机,以便我将获得该特定帐户的特定ssh密钥

git@bitbucket.orgyyyuser/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是这样的

 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$ 

我们已经为不同的主机识别了不同的ssh密钥,一个用于git,一个用于bitbucket,现在系统知道哪个ssh密钥与哪个主机一起使用。

现在我们可以轻松拉动,推动。

我配置~/.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-different-ssh-keys-for-git-push-for-a-given-domain/