如何使用具有不同帐户和主机的多个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/