天天看点

解决git本地多ssh key的问题

最近手上一个项目需要使用到一台服务器作为专用的部署服务器,在实施过程中遇到了一些问题,具体如下:

这些问题都被顺利解决了,这里特记录一下,防止遗忘。

针对上述问题,下面主要从这三个点来记录解决方案。

如何生成ssh key

如何使用特定ssh端口从git仓库拉取项目

如何使用特定密钥文件从git仓库拉取项目

系统默认的ssh key存放在如下目录:

我们将新建.git目录,用来存放git相关部署key的公私钥。

通过上述操作,在<code>~/.git</code>目录下生成了2个文件,其中<code>pub_coding.id_rsa</code>为私钥,<code>pub_coding.id_rsa.pub</code>为公钥。

我们需要将公钥添加到相关版本控制软件的账户下。

这种情况一般会发生在我们本地的ssh默认端口和git仓库的ssh端口不一致时。比如,我们本地使用了<code>57832</code>作为ssh默认端口,而git仓库使用了<code>22</code>作为ssh默认端口。

这种情况,对使用https方式访问git仓库的用户是不会受到影响的,但是会导致使用ssh方式访问git仓库的用户拉取项目使用。

针对这个问题,这里提供两种解决方法:

使用ssh://的方式拉取项目

我们可以在上面的命令中去指明对应的ssh的端口号。

使用ssh config配置来自定义端口

这种方式,我们将放到管理多ssh key的段落中去做介绍。

这个问题,换句话说就是如何git如何使用多ssh key。针对这种多ssh key的管理,我们目前主要通过定义ssh的客户端配置文件来实现。

我们可以在ssh的客户端配置文件文件中定义服务器别名、服务器地址以及针对特定服务器使用的一些专用连接配置信息。

有关ssh的客户端配置文件,我们可以通过<code>man config</code>来获取相关的介绍,这里简单放一部分介绍。

从描述中,我们可以看到,有关ssh的客户端配置文件有2个,分别是<code>~/.ssh/config</code>和<code>/etc/ssh/ssh_config</code>。他们一个是用户范围的配置,一个是系统范围的配置。

由于我们的操作要限定在用户范围,因此要使用<code>~/.ssh/config</code>文件。

需要注意的是,<code>~/.ssh/config</code>文件默认不存在,需要用户自己创建。

样例文件:

下面对上述配置文件中使用到的配置字段信息进行简单解释。

通过上面设置之后,我们就可以使用多ssh key来连接不同的git仓库了

我们可以使用<code>ssh</code>来进行连接验证测试。

通过上述设置之后,我们就可以通过不同的Host来针对不同的git仓库和git项目使用不同的ssh key了。但是,这里还需要注意的是,通常情况下我们从git仓库拉取的项目ssh访问地址,类似这种<code>git@git仓库地址:用户名/项目名.git</code>。我们一定要把这里的git仓库地址替换为我们ssh config里面设定的Host。

范例:

到这里就大功告成了!

本文转自 aaao 51CTO博客,原文链接:http://blog.51cto.com/nolinux/1753470,如需转载请自行联系原作者