为不同的 GitHub 帐户使用多个 SSH 密钥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为不同的 GitHub 帐户使用多个 SSH 密钥相关的知识,希望对你有一定的参考价值。

参考技术A 您通常使用 SSH 密钥来访问 GitHub 存储库,而不是输入用户名和密码,也就是免密码登录。这是与远程 GitHub 服务器通信的一种更安全、更推荐的方式。

有时候你有不止一个 GitHub 账户。例如,一个用于访问个人存储库,另一个用于您的日常工作。

问题是本地 Git 如何重新授权 GitHub 帐户附带的存储库。本文可能对您有所帮助。

假设 foo 和 bar 是您希望在同一台计算机中使用的两个 GitHub 用户名。您可以按照 官方的 GitHub 指南生成 SSH 密钥 。

当要求您指定要保存密钥的文件时,不要使用默认密钥。将文件名更改为与帐户关联的名称,例如:

对 bar 帐户重复相同的步骤。现在,我们有两个私钥, id_foo 和 id_bar 位于 ~/.ssh 文件夹中。

这一步让 SSH 知道应该为特定主机使用哪个私钥。

将以下内容添加到 config 文件:

您会发现, github.com-foo 和 github.com-bar 看起来是无效的主机,但实际上它们被视为别名。SSH 使用 HostName 选项对其进行映射,并在 IdentityFile 选项中使用私钥。

假设 foo 帐户访问一个 GitHub respose,其 URL 为 github.com/foo/a-foo-repos 。转到其克隆文件夹,并更改 .git/config 文件,如下所示。

值得注意的是,使用了在上一步中创建的 SSH 主机 github.com-foo :

为 bar 存储库应用类似的设置。

markdown 用于不同github帐户的多个SSH密钥

Multiple SSH Keys settings for different github account
=================================================================


create different public key
---------------------------------

create different ssh key according the article [Mac Set-Up Git](http://help.github.com/mac-set-up-git/)

	$ ssh-keygen -t rsa -C "your_email@youremail.com"

Please refer to [github ssh issues](http://help.github.com/ssh-issues/) for common problems.

for example, 2 keys created at:

	~/.ssh/id_rsa_activehacker
	~/.ssh/id_rsa_jexchan

then, add these two keys as following

	$ ssh-add ~/.ssh/id_rsa_activehacker
	$ ssh-add ~/.ssh/id_rsa_jexchan

you can delete all cached keys before

	$ ssh-add -D

finally, you can check your saved keys

	$ ssh-add -l


Modify the ssh config
---------------------------------

	$ cd ~/.ssh/
	$ touch config
	$ subl -a config

Then added

	#activehacker account
	Host github.com-activehacker
		HostName github.com
		User git
		IdentityFile ~/.ssh/id_rsa_activehacker

	#jexchan account
	Host github.com-jexchan
		HostName github.com
		User git
		IdentityFile ~/.ssh/id_rsa_jexchan


Clone you repo and modify your Git config
---------------------------------------------

clone your repo
	git clone git@github.com:activehacker/gfs.git gfs_jexchan

cd gfs_jexchan and modify git config

	$ git config user.name "jexchan"
	$ git config user.email "jexchan@gmail.com" 
 
	$ git config user.name "activehacker"
	$ git config user.email "jexlab@gmail.com" 

or you can have global git config
	$ git config --global user.name "jexchan"
	$ git config --global user.email "jexchan@gmail.com"


then use normal flow to push your code

	$ git add .
	$ git commit -m "your comments"
	$ git push


Another related article in Chinese

1. http://4simple.github.com/docs/multipleSSHkeys/

以上是关于为不同的 GitHub 帐户使用多个 SSH 密钥的主要内容,如果未能解决你的问题,请参考以下文章

markdown 用于不同github帐户的多个SSH密钥

markdown 用于不同github帐户的多个SSH密钥

markdown 用于不同github帐户的多个SSH密钥

markdown 用于不同github帐户的多个SSH密钥

如何为 Github 帐户和 Bitbucket 公司帐户添加多个 SSH 密钥

多个 GitHub 帐户和 SSH 配置