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


21

我有多个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).

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


Answers:


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

我们有一个用于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上的2个不同帐户使用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进行一些更改以进行克隆

我们的网址是这样的

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密钥。

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


如果我的git URL使用https怎么办?无论如何要努力吗?
格林罗

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.