Gitlab CI/CD SSH2_MSG_KEX_ECDH_REPLY 上的奇怪 SSH 问题
问题 几天前,我在管道上遇到了一个奇怪的问题,我看到了一个奇怪的错误日志,对我来说没有任何意义: Connection closed by UNKNOWN port 65535 因此,我决定为每个 ssh 命令启用所有 3 个级别的详细日志 目的服务器没有直接访问公网,所以需要使用ProxyJump来访问目的服务器。 script: - ssh -vvvJ jumpbox@$JUMPBOX_IP
问题
几天前,我在管道上遇到了一个奇怪的问题,我看到了一个奇怪的错误日志,对我来说没有任何意义:
Connection closed by UNKNOWN port 65535
因此,我决定为每个 ssh 命令启用所有 3 个级别的详细日志
目的服务器没有直接访问公网,所以需要使用ProxyJump来访问目的服务器。
script:
- ssh -vvvJ jumpbox@$JUMPBOX_IP bahfo2683@$DEST_IP "echo 'hello'"
我发现管道卡在了 Kex 算法:
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug3: receive packet: type 96
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: chan_shutdown_write: channel 0: (i0 o1 sock -1 wfd 5 efd -1 [closed])
debug2: channel 0: output drain -> closed
debug1: channel 0: FORCE input drain
debug2: channel 0: ibuf empty
debug2: channel 0: send eof
debug3: send packet: type 96
debug2: channel 0: input drain -> closed
Connection closed by UNKNOWN port 65535
解决方案
经过几次头痛的搜索,我找到了解决方案🎉 在这篇文章中,他们描述了我遇到的确切问题,解决方案是在目标服务器的/etc/ssh/ssh_config
中添加 Kex 算法。
所以我在 Jumpbox 和目标服务器上都在Host *
下方添加了KexAlgorithms curve25519-sha256,ecdh-sha2-nistp521
:
Host *
KexAlgorithms curve25519-sha256,ecdh-sha2-nistp521
我也添加了
curve25519-sha256
,因为我看到在管道中 ssh 客户端选择了这个算法。
我再次运行管道,但你猜怎么着?它没有用!所以,我来测试一些东西,首先,我删除了 Jumpbox 服务器上的 Kex 算法,然后尝试从 Jumpbox 连接到目标服务器,我看到了connection time out!
所以我想到在管道中同样的事情发生。我需要在管道以及两台服务器上设置 Kex 算法。
我编辑了我的.gitlab-ci.yml
文件并在 ssh 之前添加了- sed -i -e "s/Host \*/&\nKexAlgorithms curve25519-sha256,ecdh-sha2-nistp521/g"
行:
before_script:
- apk add openssh-client rsync
- sed -i -e "s/Host \*/&\nKexAlgorithms curve25519-sha256,ecdh-sha2-nistp521/g" /etc/ssh/ssh_config
使用sed -i -e "s/Host \*/&\nKexAlgorithms curve25519-sha256,ecdh-sha2-nistp521/g" /etc/ssh/ssh_config
我将 Kex 算法添加到 ssh_config 文件并再次尝试。
这次管道成功运行,我的应用程序部署在目标服务器上。
结论
这是 ssh 的罕见情况,但如果您看到此错误,请记住:
Connection closed by UNKNOWN port 65535
首先尝试两件事:
-
为调试级别 1,2 和 3 启用详细日志 -vvv
-
检查 ssh 在哪一步卡住并用谷歌搜索!
如果管道卡在SSH2_MSG_KEX_ECDH_REPLY
,那么您应该在服务器的.gitlab-ci.yml
和/etc/ssh/ssh_config
上设置 Kex 算法。
您发现其中大多数是 Mac 问题,但我的情况是 Kex 算法。
如果您正在阅读本文,我希望本文能帮助您解决 SSH 问题。
谢谢你,编码愉快!
更多推荐
所有评论(0)