如何解决kex_exchange_identification 同时连接到本地 gitlab 实例
我已经使用以下配置设置了 gitlab 的本地实例:
version: "3"
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
hostname: 'gitlab.local.com'
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.local.com:4005'
gitlab_rails['gitlab_shell_ssh_port'] = 3005
ports:
- '4005:4005'
- '3005:3005'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
然后我根据 gitlab 文档添加了 SSH 密钥。
最后,当通过 SSH 连接到实例或克隆存储库时,我收到以下错误:
ssh -Tvv git@gitlab.local.com -p 3005
OpenSSH_8.2p1 Ubuntu-4ubuntu0.2,OpenSSL 1.1.1f 31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug2: resolving "gitlab.local.com" port 3005
debug2: ssh_connect_direct
debug1: Connecting to gitlab.local.com [0.0.0.0] port 3005.
debug1: Connection established.
debug1: identity file /home/rafael/.ssh/id_rsa type 0
debug1: identity file /home/rafael/.ssh/id_rsa-cert type -1
debug1: identity file /home/rafael/.ssh/id_dsa type -1
debug1: identity file /home/rafael/.ssh/id_dsa-cert type -1
debug1: identity file /home/rafael/.ssh/id_ecdsa type -1
debug1: identity file /home/rafael/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/rafael/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/rafael/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/rafael/.ssh/id_ed25519 type 3
debug1: identity file /home/rafael/.ssh/id_ed25519-cert type -1
debug1: identity file /home/rafael/.ssh/id_ed25519_sk type -1
debug1: identity file /home/rafael/.ssh/id_ed25519_sk-cert type -1
debug1: identity file /home/rafael/.ssh/id_xmss type -1
debug1: identity file /home/rafael/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.2
kex_exchange_identification: Connection closed by remote host
我已经禁用了 ufw,我已经重置了 known_hosts,我已经尝试了所有我能想到的方法,但在互联网上找不到任何帮助我的东西。
为什么会出现这个错误?这是我通过 ssh 访问时遇到问题的唯一“服务器”...
解决方法
首先检查 GitLab Docker 容器中的 ssh 守护进程是否监听端口 3005(custom port)。
参见例如gitlab-org/omnibus-gitlab
issue 1767:
我不得不说这个问题让我很难弄清楚。gitlab_rails['gitlab_shell_ssh_port'] = 30022
仅用于更改网页中显示的 URI,而不是同时更改来宾机器中的端口 sshd
服务,这确实违反直觉。
除了上面的主观感受,它目前的运作方式还有两个事实:
- 无法更改 gitlab shell 在 docker 容器上使用的 ssh 端口。
- 使用 docker 的 ip 地址访问 gitlab 服务器时,端口必须始终为 22,而不是 URI 中使用的端口。
我认为原始文档描述的方式是解决问题的更好方式。gitlab_rails['gitlab_shell_ssh_port']
还应更改在来宾端提供的端口 gitlab-shell。
还有:
您必须通过 Dockerfile 自定义文件 /assets/sshd_config
内的端口。
因为我看到“连接已建立。”,有可能,因为那些错误报告,sshd_config
现在被正确修改(自动)
如果是这种情况,请仔细检查您在 GitLab 配置文件中注册的公钥:它应该是 /home/rafael/.ssh/id_rsa.pub
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。