kex_exchange_identification 错误:反向代理背后的 Git

kex_exchange_identification 错误:反向代理背后的 Git

不太确定该去哪里。我被困住了。我有一个在本地虚拟机上运行的 git 存储库(称为主机名 Git),我可以通过以下方式在本地访问它:[电子邮件受保护],我可以让我的路由器将任何端口转发到 Git,并且我可以通过 git@ 访问 git,但我无法通过域访问它([电子邮件受保护])而且我不太确定我应该做什么。

基本上,git 存储库在虚拟机上的 Docker 容器中运行。我更改了端口,以便容器绑定到主机上的端口 22,主机 SSH 绑定到端口 4242,并且家庭路由器设置为将流量从外部端口 8022 转发到端口 22 上的 Git。同样,到目前为止,一切都很顺利。

然后,我转到托管在 AWS EC2 实例上的代理,并再次调整端口,以便主机虚拟机在端口 4242 上运行 SSH。该计算机正在运行简单的 HAProxy 设置,以根据域转发 HTTP/HTTPS 流量。我尝试通过 HA 代理设置 SSH 转发 - 但我发现这显然是不可能的...也许我的配置可以帮助别人想象我在这里试图解决的问题...

global
        log 127.0.0.1 local0 notice
        maxconn 2000
        user haproxy
        group haproxy

defaults
        log     global
        mode    http
        option  ssl-hello-chk
        option  dontlognull
        retries 3
        option redispatch
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

frontend ssh
        mode tcp
        bind *:22 ssl crt /etc/ssl/mydomain.io/mydomain.io.pem
        default_backend gitlab-ssh22

frontend mydomain.io-gitlab
        bind *:80

        acl docker-acl hdr_end(host) -i docker.mydomain.io
        acl gitlab-acl hdr_end(host) -i gitlab.mydomain.io
        acl test-acl hdr_end(host) -i test.mydomain.io

        use_backend gitlab-bk80 if docker-acl
        use_backend gitlab-bk80 if gitlab-acl
        use_backend test-bk80 if test-acl

        default_backend none-bk

frontend mydomain.io-gitlab-https
        bind *:443 ssl alpn h2 strict-sni crt /etc/ssl/mydomain.io/mydomain.io.pem
        stats uri /haproxy?stats

        acl docker-acl hdr_end(host) -i docker.mydomain.io
        acl gitlab-acl hdr_end(host) -i gitlab.mydomain.io

        use_backend gitlab-bk443 if docker-acl
        use_backend gitlab-bk443 if gitlab-acl

        default_backend none-bk

#       acl letsencrypt-acl path_beg /.well-known/acme-challenge/
#       use_backend letsencrypt if letsencrypt-acl

frontend mydomain.io-docker
        bind *:5000 ssl alpn h2 strict-sni crt /etc/ssl/mydomain.io/mydomain.io.pem
        default_backend docker-bk5000


backend gitlab-ssh22
        mode tcp
        server gitlab22 24.x.x.x:8022 check

backend gitlab-bk80
        server gitlab80 24.x.x.x:8080

backend gitlab-bk443
        server gitlab443 24.x.x.x:8443 ssl verify none maxconn 1000

backend docker-bk5000
        server docker5000 24.x.x.x:5000 ssl verify none maxconn 1000

backend test-bk80
        server test 24.x.x.x:5001 maxconn 1000

每当我尝试签出、克隆或推送...任何内容时,它都会返回错误:

>git push -u origin master

kex_exchange_identification: Connection closed by remote host

Connection closed by 23.x.x.x port 22

fatal: Could not read from remote repository.

相关内容