gitlab服务: kex_exchange_identification: Connection closed by remote host

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gitlab服务: kex_exchange_identification: Connection closed by remote host相关的知识,希望对你有一定的参考价值。

参考技术A

想复杂了。

搜索了一圈,其实是基本原理没理解到位。

git clone git@xxx.com:group/project.git 实际使用的是SSH协议。多个认证文件存在时,通常需要在config文件中进行类似如下的配置——

需要强调的是: Port端口值是SSH服务的端口,只有在SSH服务的默认端口变更是才需要进行显示配置

自己搭建的环境使用的路由器自带的 DMZ 功能(路由器下的内网中的某台机器作为路由器绑定的静态ip的服务提供商。简单理解为——此静态ip提供的所有服务实际上都来自某台指定的内网机器)

搭建的gitlab服务使用的web服务端口是9527,而不是默认的80端口。使用http地址进行git操作时,提供用户名、密码可以正常进行操作。添加了ed25519格式的SSH key后,一直提示 kex_exchange_identification: Connection closed by remote host 的错误。执行 ssh -vT git@stf.geb-corp.com 测试时,提示如下详细信息。配置生效了,

可以在nginx的log下看到 10.115.8.73 - - [27/Apr/2021:16:00:41 +0800] "- -" 400 150 "" "-" 这样的信息。

实际上就只是端口配置错误了而已~~

怎么配置gitlab gitlab

参考技术A GitLab是由Ruby语言开发的基于Linux的Git服务器,是我见过的最强大的Git服务器。发现它之后,立即决定将Git服务器换成GitLab。
但安装好GitLab之后面临一个问题,如何将服务器上的git项目直接导入到GitLab,之前的Git服务器是由是git+apache搭建的(详见在Linux上用Apache搭建Git服务器)。
在网上发现了这篇文档——Import bare repositories into your GitLab instance,并按之进行了操作。
1)设置存放代码库的主目录
vi /etc/gitlab/gitlab.rb

比如这里设置为:git_data_dir "/gitlab/repos"
2)访问刚搭建的GitLab站点,创建一个group,比如cnblogs。
这时会在 /gitlab/repos 下创建 /gitlab/repos/repositories/cnblogs 文件夹。
然后在/gitlab/repos/repositories/创建一个文件夹,比如cnblogs
3)将现有的所有git项目文件复制到这个文件夹
cp -r /data/git/* /gitlab/repos/repositories/cnblogs

4)修改一下复制过来的文件夹的所有者:
chown -R git:git /gitlab/repos/repositories/cnblogs

5)运行GitLab导入命令
cd /var/opt/gitlab
gitlab-rake gitlab:import:repos

等了一段时间之后,显示done,却一个项目也没导入进来。
经研究发现,在导入时,GitLab只认文件夹名以.git结尾的项目。于是,将要导入的项目文件夹名称加上.git后缀,再次进行导入。
结果显示导入成功,比如:
Processing cnblogs/CNBlogsJob.git
* Created CNBlogsJob (cnblogs/CNBlogsJob.git)
Done!

可以是GitLab站点上却看不到已导入的项目。多次努力,也没能解决这个问题。
后来,实在没办法,改为手动导入,导入方法如下:
1)在GitLab站点上创建与要导入的项目同名的项目。
2)进入刚创建的项目文件夹
cd /gitlab/repos/repositories/cnblogs/项目名称.git

3)删除该文件下的所有文件
rm -rf *

4)将要导入的项目文件夹下的所有文件复制过来
cp -r /data/git/CNBlogsJob/* /gitlab/repos/repositories/cnblogs/CNBlogsJob.git

就这样将项目一个一个地导入进来。
5)导入完成后,修改一下导入的所有项目的文件所有者
chown -R git:git /gitlab/repos/repositories/cnblogs

如果不修改所有者,客户端无法进行git push。
就这样手动地完成了现有Git项目的导入。
备注:操作系统是CentOS 6.2,GitLab版本是7.8.4。

以上是关于gitlab服务: kex_exchange_identification: Connection closed by remote host的主要内容,如果未能解决你的问题,请参考以下文章

为啥自建的本地gitlab服务器打开很慢

GitLab服务器迁移

通过文件系统将 Gitlab 存储库复制到另一个 Gitlab 服务器

gitlab服务器迁移

gitlab 优化

搭建GitLab服务器