使用ssh config配置克隆非22端口的repos

前言

前段时间在本地局域网环境搭建了个gitlab,于是就用反向隧道把局域网的gitlab服务通过云服务器映射到外网了,但是通过ssh协议克隆仓库的时候出现了一点问题,踩了一些坑,于是记录下来,避免有更多的人踩这个坑

环境

  • 域名 gitlab.crisen.org
  • 端口 2222
  • 仓库名称 test
  • 仓库地址 git@git.crisen.org:crisenchou/test.git

遇到的问题

因为我的gitlab服务器是通过反向隧道建立的,所以走的不是22端口,那么直接通过git clone的方式是没有办法进行克隆的,通过查询一些资料,知道了有两种方法来实现这个仓库的克隆

通过ssh config

在~/.ssh目录下,编辑一个config文件

vim ~/.ssh/config

添加下面的内容

Host gitlab
    Hostname git.crisen.org
    Port 2222
    User git

Host 表示别名 Hostname表示服务器地址,可以是ip的形式 Port为端口 User指定用户

接下来只要在本地以下面的形式来克隆仓库就可以了

配置config之后 不能直接克隆仓库地址来克隆 而是下面的命令

git clone git:crisenchou/test.git

这里的gitlab别名 等价于git@git.crisen.org -p2222 所以是上面的命令 而不是直接用地址来克隆
这一步非常关键

通过ssh协议

使用这种方法会更加简单一些,不过要输入的字符多一点,多个仓库的情况下,还是配置来的更好一点,它的命令如下

git clone ssh://git@git.crisen.org:2222/crisenchou/test.git

尾语

我是因为云服务器的内存不够,而且考虑到内网环境下,使用内网的git服务器更加迅速,所以在局域网搭建了gitlab服务器,再加上我在外网的环境下有时候也需要用到这个git服务,索性就自己捣腾了一下,虽然踩坑是无法避免的,但是在踩坑的过程中不断的成长,我觉得才更有意义.

发表评论