ssh-key 与 git帐户配置以及多帐户配置

转载自:http://www.cnblogs.com/dubaokun/p/3550870.htmlhtml

 

ssh-key 与 git帐户配置以及多帐户配置

在使用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_rsassh

若是出现Could not open a connection to your authentication agent的错误,就试着先用如下命令:ide

1测试

2

ssh-agent bash

ssh-add id_rsa

添加完以后 登录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

$ ssh -T git@github.com

Enter passphrase for key 'C:/Users/kunkun/.ssh/github.rsa':

Hi kunkun01! You've successfully authenticated, but GitHub does not provide shel

l access.

  

 多帐户又分为两种状况  

也能够参考老外写的 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 key:

$ cd ~/.ssh     # 切换到C:\Users\Administrator\.ssh

ssh-keygen -t rsa -C "mywork@email.com"  # 新建工做的SSH key

# 设置名称为id_rsa_work

Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): id_rsa_work

二、新密钥添加到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 git@github.com

Hi BeginMan! You've successfully authenticated, but GitHub does not provide shel

l access.

$ 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

$ git clone github2:kunkun01/Mywork.git

Cloning into 'Mywork'...

remote: Counting objects: 3, done.

remote: Total 3 (delta 0), reused 0 (delta 0)

Receiving objects: 100% (3/3), done.

Checking connectivity... done                                                                               

若是你只是经过这篇文章中所述配置了Host,那么你多个帐号下面的提交用户会是一我的,因此须要经过命令git config --global --unset user.email删除用户帐户设置,在每个repo下面使用git config --local user.email '你的github邮箱@mail.com' 命令单独设置用户帐户信息

相关文章
相关标签/搜索