Git多账号配置及SSH-KEY管理

来源:互联网 发布:python如何连接小票机 编辑:程序博客网 时间:2024/05/15 12:58

最近遇到个问题,码云上有项目、github上也有项目,每次提交的时候都需要输入账号和密码太麻烦了。一想,git这么强大的工具怎么可能会没有可以管理多个账号的方法。找到下面这篇文章太棒了。
Git管理多个SSH密钥,Git多帐号配置
经过一番配置,我成功的实现了多账号的管理,每次提交都不用再输入账号和密码了。下面是我经过上面这个篇试验成功然后总结下。

Git提交的原理

Git提交时有Https和SSH两种验证方式,Https的方式需要帐号和密码比较好理解,不过它需要在每次提交时输入帐号和密码,有点麻烦;而SSH的功能可以粗暴的理解为记住帐号密码,不过对这个过程有人会有点疑惑。首先,我们用SSH命令生成一个公钥-私钥对,我们会把公钥添加到Git的服务器,把私钥放在本地。提交文件的时候Git服务器会用公钥和客户端提交私钥做验证(具体细节不究),如果验证通过则提交成功,那么我们在把公钥添加到服务器的时候肯定是需要登录Git服务器的,这个过程其实可以理解为帐号和密码托管给SSH了,所以也是相当于输入了帐号密码,但是由SSH帮你记住了。这么理解是可以,但是SSH的意义不仅仅是这样,关于SSH的更详细内容看客可以自行再了解。

生成SSH-KEY

因为windows版本的git自带SSH,所以在当前文件夹右键,选择Git Bash Here,会自动在当前文件夹打开一个MINGW的命令行窗体。通过如下命令查看下git版本。

ssh -V

这里写图片描述

接下来在刚才的文件夹,使用SSH命令在当前文件夹生成一对SSH-KEY:

ssh-keygen -t rsa -C "你的邮箱地址"

生成ssh-key出现如下界面

出现这个界面是需要输入SSH-KEY的文件名字,这里名字理论上可以随便取,如果你不知道取什么名字你就直接回车就好了,就会生成默认的id_rsa。遇到多个账号的时候我们一般的命名规范就是默认名后面加上平台(例如:id_rsa_oschina或者id_rsa_github)。
当我们输入ssh-key生成的文件明后就会出现输入私钥的密码并确认,为了安全在密码输入的时候不会反显,什么都看不到,这个密码你自己设置,但是你一定要记住:

Enter passphrase (empty for no passphrase):输入密码Enter same passphrase again:确认密码

这里写图片描述

输入完密码确认后回车,就会出现如下的界面,表示SSH-KEY生成成功。

这里写图片描述

现在你在当前的文件夹就会找到相应的id_rsa和id_rsa.pub;id_rsa是私钥,id_rsa.pub是公钥。生成SSH-KEY的过程就完成了。

单个账号的配置

首先我们生成我们账号的SSH-KEY,步骤如上“生成SSH-KEY”。
然后找到id_rsa.pub使用文本打开,将内容直接复制。如果是码云平台,在个人中新找到如下界面,然后将刚才复制的内容复制到红色框中,最后点击确定按钮,就添加成功了。

这里写图片描述
然后把SSH-KEY配置给SSH,让系统的SSH知道这个KEY。Window把id_rsa文件拷贝到C:/Users/你的用户名/.ssh文件夹下。如果没有.ssh这个文件就新建一个。拷贝完成后,把.ssh文件夹下的id_rsa文件添加到SSH-Agent,命令如下:

ssh-add id_rsa文件的路径
如果命令行此时正在.ssh文件夹下:ssh-add id_rsa即可。此时添加时如果遇到错误 `Could not open a connection to your authentication agent.`那就先输入如下命令后重试
eval $(ssh-agent)

如果还不行,请再执行ssh-agent bash命令后重试。如果还不行,请参考:这里
最后,执行以下命名配置Git全局用户和邮箱:

git config --global user.name "你的名字"git config --global user.email "你的邮箱"

配置全局用户和邮箱完成后,我们可以查看C:/Users/你的用户名/.gitconfig即可看到配置,内容大概如下:

[user]    name = Kevin_Smile    email = 123456789@qq.com

到此配置全部完成,接下来验证下SSH-KEY配置是否成功,在命令窗口中输入如下命令(我是使用的码云平台):

码云

ssh -T git@git.oschina.net

github

ssh -T git@git.oschina.net

这里写图片描述

此时需要输入刚才生成SSH-KEY时输入的私钥密码回车,如果出现上图内容“Hi SmileToMe!You’ve successfully authenticated,but GitHub does not provide shell access.”就表示链接成功。

多账号配置

Git多账号配置跟单账号配置差不多,下面我们来一起看下。前面生成SSH-KEY的步骤是一样的。现在我们以码云和github两个平台来讲解。
首先生成SSH-KEY,注意在生成SSH-KEY的时候,不同的平台使用不同的名字,例如:id_rsa_oschina和id_rsa_github,就是在默认名+下划线+平台名。
然后到相应的平台配置公钥信息并测试是否可以连接成功。
接下来就是配置私钥的位置,和单个账号配置不一样,单个账号也可以按照多个账号的配置方法配置。配置方法如下:
进入C:/Users/你的用户名/.ssh文件夹,右键新建一个文本文件,改名为config即可。这里要注意,没有.ssh文件夹的要新建一个.ssh名的文件夹。下面来填写config文件的内容,我以Github、Gitlib、OSChina,局域网为例:

 Host github.com    HostName github.com    User smallajax@foxmail.com    PreferredAuthentications publickey    IdentityFile /home/Workspace/ssh/id_rsa_githubHost gitlib.com    HostName gitlib.com    User smallajax@foxmail.com    PreferredAuthentications publickey    IdentityFile id_rsa_gitlibHost oschina.com    HostName oschina.com    User smallajax@foxmail.com    PreferredAuthentications publickey    IdentityFile /D/Workspace/ssh/id_rsa_oschinaHost 192.168.1.222    HostName 192.168.1.222    User smallajax@foxmail.com    PreferredAuthentications publickey    IdentityFile /D/Workspace/ssh/id_rsa_oschina

解释一下,HostName是服务器的地址,User是用户名,PreferredAuthentications照抄即可,这里主要说的是IdentityFile,上面我们看到了三种情况,

  1. 填私钥文件的本地路径。
  2. 不论是Linux还是Windows都可以写相对路径,比如把id_rsa_xxx私钥文件放在.ssh文件夹下。
  3. 文件放在不同跟路径下时,需要写绝对路径
    1. Linux中没有放在.ssh文件夹内或者子文件夹。
    2. Windows中没有放在C盘下时。注意据对路径变化,比如C盘下是/C/xo/abc、比如D盘下/D/ssh/id_rsa这样,还看不懂请参考上方例子。

拷贝完成后,把所有的id_rsa私钥文件添加到SSH-Agent,命令如下:

ssh-add id_rsa文件的路径

例如添加.ssh文件夹下的,Windows这样做:ssh-add ~/.ssh/id_rsa,如果你在.ssh文件夹下:ssh-add id_rsa即可。
最后,还剩下项目的用户和邮箱没有配置,和配个单个Git帐号的方式不同,这里我们需要为每个项目分别配置,所以要命令行进入仓库文件夹再设置。第一种情况是先从Git上pull仓库下来,第二种情况是本地初始化Git仓库,总之进入改仓库文件夹后:

git config --local user.name "你的名字"git config --local user.email "你的邮箱"

不过麻烦的一点是如果是多个项目就需要挨个配置,不过我们一般是pull一个项目就配置一下,也仅仅需要配置一次即可。

注意配置单个Git帐号时,是不进入项目文件夹就可以,不过不是使用–local,而是使用–global就可以全局配置。

配置项目用户和邮箱完成后,我们可以进入项目文件夹下的.git文件夹查看config文件内容,大概内容如下:

...[user]    name = YanZhenjie    email = smallajax@foxmail.com

至此,所有的配置完成了。

0 0
原创粉丝点击