解决kex_exchange_identification报错问题
1. 问题排查
在某一次写完博客使用hexo d
部署的时候出现了kex_exchange_identification: Connection closed by remote host
的错误,应该是使用SSH连接github的时候出现了错误。
可以使用以下命令验证是否是SSH出现了问题:
1 | ssh -T git@github.com |
果然还是出现了kex_exchange_identification: Connection closed by remote host
的错误。
这可能是由于多种原因造成,下面是一些可能的解决方案:
- 检查SSH密钥:确保你的SSH密钥是正确的,并且已经添加到GitHub的账户设置中。你可以在GitHub的账户设置中查看和添加SSH密钥。
- 检查SSH配置文件:检查你的SSH配置文件(通常位于~/.ssh/config)是否正确配置。确保没有配置错误,例如错误的端口号或主机名。
- 更新SSH密钥:如果你的SSH密钥已经过期或已被替换,尝试更新SSH密钥并重新添加到GitHub账户中。
- 检查网络连接:确保你的网络连接正常,并且没有被防火墙或代理服务器阻止。尝试使用其他网络连接或检查防火墙设置。
- 更新Git版本:如果你使用的是较旧的Git版本,可能会遇到与SSH连接相关的问题。尝试更新Git到最新版本,并重新尝试连接。
- 检查SSH代理:如果你使用了SSH代理,确保代理设置正确,并且代理服务器正常运行。
- 重启SSH服务:在某些情况下,重启SSH服务可能有助于解决问题。
- 清除SSH缓存:有时候,SSH缓存可能导致连接问题。你可以尝试清除SSH缓存,并重新连接。
2. 解决方法
尝试了多种办法无果后,最后通过HTTPS端口使用SSH解决了问题。
首先测试是否可以通过HTTPS端口使用SSH,请运行以下SSH命令:
1 | ssh -T -p 443 git@ssh.github.com |
如果可以,则覆盖 SSH 设置以强制任何与 GitHub.com 的连接通过该服务器和端口运行。要在 SSH 配置文件中设置此项,编辑文件~/.ssh/config
。
进入~/.ssh/文件夹:
1 | cd ~/.ssh/ |
编辑config文件:
1 | vim config |
添加下面的代码:
1 | Host github.com |
按esc健退出编辑,并输入:wq
保存并退出。
这时候可以通过再次连接到github.com测试配置是否生效:
1 | ssh -T git@github.com |
切换到端口 443 后第一次与 GitHub 交互时,可能会收到一条警告消息,提示在 中未找到主机known_hosts
,或者通过其他名称找到主机。
1 | The authenticity of host '[ssh.github.com]:443 ([140.82.112.36]:443)' can't be established. |
如果 SSH 指纹与 GitHub 发布的指纹之一匹配,则可以输入“yes”。
这时候就可以使用hexo d
命令部署新写的文章了。
转载:https://docs.github.com/en/authentication/troubleshooting-ssh/using-ssh-over-the-https-port
解决kex_exchange_identification报错问题
https://zwx1123.github.io/blog/2024/08/16/解决kex-exchange-identification报错问题/