如何解决Docker Desktop 3.3.0+ 在端口 443 上中断 SSH:如何修复?
我正在使用 Mac 版 Docker 桌面。
从 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/
尝试在 noProxy
中设置 ~/.docker/config.json
,因为它与 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 / altssh.gitlab.com 上使用 Docker 3.3.0+ 和 SSH?
解决方法
从 Docker 3.3.2 及更新版本开始,该错误已得到修复。
• 当没有设置上游代理时,禁用 HTTP 和 HTTPS 透明代理。修复 docker/for-mac#5572。• 恢复到 3.2.2 中使用的 HTTP 和 HTTPS 代理实现。
以前...
看起来这个错误是已知的,虽然不完全是在这个上下文中。
原因是假设的“HTTPS”/TLS 连接在不使用 SNI(服务器名称指示)时会被丢弃,而 SSH 作为非 SSL/TLS 协议可能不会这样做。
已经有一个开放的 Docker 桌面 Mac 问题:
https://github.com/docker/for-mac/issues/5568
以及链接的 StackOverflow 问题:
Cannot reach SSL IP when in docker container over bridge. Getting SSL_ERROR_SYSCALL
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。