这些都是从网站和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代理中。
一个用于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上使用两个不同的密钥来管理两个不同的账户,并且还有一个用于Github的密钥。
现在我们需要告诉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密钥与哪个主机一起使用。
现在我们可以轻松地进行拉取和推送操作。