转载自:http://www.cnblogs.com/dubaokun/p/3550870.htmlhtml
在使用git的时候,git与远程服务器是通常经过ssh传输的(也支持ftp,https),咱们在管理远程分支以前 须要在本机上建立ssh-key密钥对,并把其中的公钥添加到github中。git
若是你就会一直在你的计算计算机使用一个远程的Git服务器,而且帐号是一个,比较简单,生成key的时候也没有太大注意的地方,直接运行以下的第一步而后按回车就能够了github
一、在 gitbash上运行 ssh-keygen -t rsa -C "Github帐户邮箱"shell
二、接下来会提示输入key的名字 默认名字为id_rsa .默认就好了bash
三、而后会提示输入口令,这里口令与Github中的密码无关,随便输入能够为空。服务器
4. 若是在第二步中的没有从新命名的话,则忽略此步骤,ssh agent默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中 app
ssh-add id_rsa
ssh
若是出现Could not open a connection to your authentication agent的错误,就试着先用如下命令:ide
1测试 2 |
|
添加完以后 登录Github 点击 网页右上侧的 Account Setting 按钮 - 选择 ssh-keys 点击Add SSH Key ,在title中输入名字,而后将公约即id_rsa.pub添加到ssh-key处。
在git bash的命令行中输入
ssh -T git@github.com 若是能正常访问便可
1 2 3 4 |
|
也能够参考老外写的 Git config for mutiply SSH keys
一、针对同一个服务器的同用户(好比 我平时开发开源的小东东,有的是一个帐号是公司的帐号对外开源项目用的,另外我本身也比较崇尚开源,因此本身也有了Github帐号)
2,针对不一样服务器的用户(如今pass平台 部署应用都是经过git来管理的,好比常见的Openshift,Heroku appfog等,在这里我也注册了帐号)
在咱们访问git服务器的时候,若是经过ssh的方式话,访问不一样的服务器要使用不一样的ssh-key。通过在第一步的过程当中,在建立ssh-key的默认命名为id_rsa,若是使用不一样的帐户的,必须得给不一样的key设置不一样的名字,不然若是继续使用默认名字的话,会把以前的id_rsa覆盖掉。
具体操做以下 user2是个人另一个Github帐户
一、新建user2的SSH Key
1 2 3 4 5 |
|
二、新密钥添加到SSH agent中
由于默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中:
ssh-add ~/.ssh/id_rsa_work
若是出现Could not open a connection to your authentication agent的错误,就试着用如下命令:
ssh-agent bash ssh-add ~/.ssh/id_rsa_work
(第二步 好像没什么做用)
三、修改config文件 将帐户以及git服务器与对应的密钥关联。在~/.ssh目录下找到config文件,若是没有就建立:
touch config
而后修改以下: 个人config配置以下:
# 该文件用于配置私钥对应的服务器 # Default github user(first@mail.com) Host github.com HostName github.com User git IdentityFile C:/Users/Administrator/.ssh/id_rsa # second user(second@mail.com) # 建一个github别名,新建的账号使用这个别名作克隆和更新 Host github2 HostName github.com User git IdentityFile C:/Users/Administrator/.ssh/id_rsa_work
其规则就是:从上至下读取config的内容,在每一个Host下寻找对应的私钥。这里将GitHub SSH仓库地址中的git@github.com替换成新建的Host别名如:github2,那么原地址是:git@github.com:funpeng/Mywork.git,替换后应该是:github2:funpeng/Mywork.git.
四、用记事本打开新生成的~/.ssh/id_rsa2.pub文件,将里面的内容添加到GitHub后台。
可不要忘了添加到你的另外一个github账号下的SSH Key中。
五、测试:
1 2 3 |
|
$ ssh -T github2 Hi kunkun01! You've successfully authenticated, but GitHub does not provide shell access.
六、应用
测试成功,那么我尝试在个人work目录下克隆我@126.com帐号下的远程仓库。以下:
1 2 3 4 5 6 |
|
若是你只是经过这篇文章中所述配置了Host,那么你多个帐号下面的提交用户会是一我的,因此须要经过命令git config --global --unset user.email
删除用户帐户设置,在每个repo下面使用git config --local user.email '你的github邮箱@mail.com'
命令单独设置用户帐户信息