我正在使用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