当可以通过 HAProxy 访问 GitLab 时,无法通过 SSH 进入

当可以通过 HAProxy 访问 GitLab 时,无法通过 SSH 进入

我的家庭网络中的虚拟机上的 docker-compose 中有一个 GitLab 实例。

它在 HAProxy 代理后面运行,并且可以通过 访问git.example.com:443

为了能够在我的家庭网络内部和家庭网络外部访问它们,我必须让 DNS 指向git.example.comHAProxy 地址。

因此,当我尝试通过 SSH 连接到 时git.example.com,它会尝试通过 SSH 连接到代理服务器。

因此,我尝试将其转发,以便如果有人尝试通过 SSH 连接ssh.git.example.com:22(或端口 443),它会将其重定向到media.lan.example.com:4002,因为端口4000/ 4001/分别4002是 docker 用于容器的端口80/ 443/ 22

我该如何实现这一点?能够在端口22443上使用 SSH,而ssh.git.example.com无需客户端更改其任何配置。

我的 HAProxy 配置:

frontend http
    bind example.com:80
    reqadd X-Forwarded-Proto:\ http
    mode http
    use_backend gitlab-backend if { hdr(host) -i git.example.com }

frontend https
    bind example.com:443 ssl crt /certs/cert.pem
    mode http
    use_backend gitlab-backend if { hdr(host) -i git.example.com }

backend gitlab-backend
    redirect scheme https if !{ ssl_fc }
    server gitlab1 media.lan.example.com:4001 ssl check verify none
    mode http

backend gitlab-ssh-backend
    redirect scheme https if !{ ssl_fc }
    mode tcp
    server gitlabssh1 media.lan.example.com:4002 check

frontend gitlab-ssh-frontend
    bind ssh.git.example.com:443 ssl crt /certs/cert.pem
    use_backend gitlab-ssh-backend
    mode tcp

相关内容