龙空技术网

一台电脑如何同时玩转GitHub和公司Git服务器?

编程小蝉 94

前言:

现时你们对“ubuntugit公钥”都比较注重,你们都需要了解一些“ubuntugit公钥”的相关内容。那么小编同时在网上网罗了一些有关“ubuntugit公钥””的相关文章,希望咱们能喜欢,兄弟们快快来学习一下吧!

最近有个小学妹刚入职新公司,公司用的是Git版本管理工具,然后她其实自己也经常玩Github,Git用起来基本操作问题也不大。但是现在她遇到一个小问题,相信这个问题很多程序员(媛)也经常遇到。什么问题呢?来跟大家唠一唠。

大家都知道,在多人协作开发中,我们需要把代码提交到Git服务器的。但是并不是所有人都可以往服务器上推送代码,只有有相应权限的人才能推送,所以就涉及到如何对服务器进行授权的问题。现在授权方式有两种,一种是HTTP/HTTPS协议,另外一种是SSH Key协议。

HTTP/HTTPS协议好处是方便,不需要繁杂的配置,push的时候直接输入用户名和密码就行。但是有个不好的是,每次进行PUSH操作,都需要进行授权,对于长期需要在这个仓库下工作来说,这显得就有点太麻烦了。

还有另外一种授权方式,就是SSH Key,SSH Key是先在本地生成一个公钥和秘钥,然后再把公钥配置到Git服务器上,以后每次提交代码,Git会自动和本地的秘钥进行匹配,如果匹配到了,就代表授权成功,否则就是授权失败。SSH Key的方式好处是一次授权,次次可用。但第一次配置会稍微麻烦一点,不过对于长期在某个Git服务器上工作来说,这样一次麻烦,还是很值得的。

再回到刚刚那个小学妹的问题上,她是用SSH Key的方式在公司的Git服务器授权的,然后她的Github账号用的也是SSH Key方式授权,而同一个SSK Key是不能在两个平台上共用的(用户名和邮箱相同的除外),在理解为什么不能共用之前,先来看下如何生成SSH Key。

一、生成一个SSH Key:

打开git bash。然后输入命令:ssh-keygen -t rsa -C "你的邮箱"。一顿下一步就可以了,密码都保留为空。

然后在当前登录用户的home目录下找到.ssh:C:\Users\hynev\.ssh,打开id_rsa.pub。

在github的设置中,点击SSH and GPG keys,在SSH Keys的地方,点击Add New,把id_ras.pub中的文本,复制到里面去。

注意到没有,你在生成SSK Key的时候,需要用到你的邮箱。一般我们在公司,都会有一个公司的内部邮箱,在Github上,我们用的都是自己私人的邮箱。不同邮箱生成的SSH Key是不同的,因此两个不同的Git服务器是不能公用相同的SSH Key的。那这时候怎么办呢?我们可以生成多个SSH Key,针对每个Git服务器都生成一个对应的SSH Key不就可以了吗?是的,来干起来!

二、生成多个SSH Key:

多个SSH Key生成方式跟之前的有点不一样。这里我们以Github和Gitee两个服务器为例,做个详细介绍。假如我在Github上的邮箱是github@qq.com,在Gitee上的邮箱是gitee@qq.com。

1.执行ssh-keygen -t rsa -C "github@qq.com"。

然后回车。

2.提示要输入SSH Key的路径和名称,我们填入id_rsa_github。

3.后面默认全部留空,按回车键一顿下一步就行了。

这时候会在本地生成两个文件,分别是:

id_rsa_github和id_rsa_github.pub。

同样,gitee的创建方式也一样,只不过在输入秘钥名称的时候,把id_rsa_github改成id_rsa_gitee就行了。

此时在本地就有四个文件(两个公钥和两个秘钥)。我们把这四个文件拷贝到当前用户的home目录下的.ssh中(比如/home/ubuntu/.ssh或者C:\Users\hynev\.ssh)。

生成了多个SSH Key后,还需要写一个config配置文件用来映射不同的Git服务器与SSH Key文件。继续来往下走。

三、配置多个SSH Key文件:

上一个步骤已经生成了多个SSH Key,并且已经拷贝到.ssh文件夹中了。然后我们就可以开始配置了。步骤如下:

1.在.ssh文件夹中创建config文件。这个文件没有任何后缀。

2.打开config文件,然后输入以下代码:

这里对以上代码做个简单介绍。其中Host和HostName填git服务器的域名就可以。然后User分别填在这两个服务器上注册时候的邮箱。PreferredAuthentications publickey是固定写法,IdentityFile则分别填对应的公钥文件名称。

3.以上配置好后,再把私钥文件添加到SSH-Agent中。执行命令如下:ssh-add id_rsa_github以及ssh-add id_rsa_gitee。如果执行的时候出现错误Could not open a connection to your authentication agent.,那么先执行eval $(ssh-agent),再执行ssh-add命令即可。

4.以上操作都完成后,就可以进行测试,看能否授权成功。比如测试github,那么命令为:ssh -T git@github.com。如果提示Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.,则说明已经配置成功了。

以上便已经成功配置了多个SSH Key,在clone、push代码的时候,他会自动根据当前git仓库配置的url来选择不同的秘钥,就好像只有一个秘钥一样。

在我还没跟小学妹讲配置多个SSH Key之前,她每次在公司都只能通过Http/Https协议来授权,工作效率低,经常加班。自从我跟小学妹讲完如何配置多个SSH Key后,小学妹已经开始有时间陪我去吃饭看电影了,准备考虑下长期的发展。老铁们,我是不是靠实力吃饭的?

标签: #ubuntugit公钥