DockerDesktop3.3.0+在443端口中断SSH:如何修复



我正在使用Docker Desktop for Mac

由于版本3.3.0和3.3.1,我无法再连接到端口443上的altssh.gitlab.com,而3.2.2和更早版本可以工作。

因此,这些命令都在3.2.2中工作(我降级并验证(:

$  ssh git@gitlab.com
$  ssh -p 443 git@altssh.gitlab.com

两者都产生这样的输出:

PTY allocation request failed on channel 0
Welcome to GitLab, @user!
Connection to altssh.gitlab.com closed.

然而,对于3.3.0和3.3.1,只有ssh git@gitlab.com在工作,而端口443似乎被Docker代理或拦截,结果是:

kex_exchange_identification: Connection closed by remote host

我向nc gitlab.com 22(netcat(验证了gitlab.com在端口22处的回复:

SSH-2.0-OpenSSH_7.9p1 Debian-10+deb10u2

nc altssh.gitlab.com 443也在3.2.2中打印该文本,但没有显示任何内容,只是挂在3.3.0+中。

我在这里查看了3.3.0的发行说明:https://docs.docker.com/docker-for-mac/release-notes/

尝试在~/.docker/config.json中设置noProxy,因为它与HTTPS一起被提及,并重新启动了Docker Desktop,但它什么也没改变:

{
"proxies": {
"default": {
"noProxy": "altssh.gitlab.com,075e5c94415c4071840fa96497443943.pacloudflare.com,172.65.251.182,2606:4700:90:0:f0ff:e6a3:2ac:f7ef"
}
}
}

有没有一种方法可以在端口443/altsh.gitlab.com上使用Docker 3.3.0+和SSH?

从Docker 3.3.2及更新版本开始,该错误已经修复。

来自3.3.2发行说明:

•当没有设置上游代理时,禁用HTTP和HTTPS透明代理。修复docker/用于mac#5572。•恢复到3.2.2中使用的HTTP和HTTPS代理实现。


以前

看起来这个bug是已知的,尽管在这种情况下并不完全如此。

原因是假定的";HTTPS"/TLS连接在不使用SNI(服务器名称指示(时会被丢弃,而SSH作为一个非SSL/TLS协议可能不会这样做。

已经有一个开放的Docker Desktop for Mac问题:
https://github.com/docker/for-mac/issues/5568

以及链接的StackOverflow问题:
在桥上的docker容器中时无法访问SSL IP。获取SSL_ERROR_SYSCALL

最新更新