HoRain云--解决 SSH 连接 GitHub 时出现 ​​“Connection closed by remote host”​​ 的问题

  

🎬 HoRain云小助手个人主页

 🔥 个人专栏: 《Linux 系列教程》《c语言教程

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

​​1. 检查网络连通性​​

​​2. 验证 SSH 密钥配置​​

​​(1) 检查公钥是否添加到 GitHub​​

​​(2) 检查私钥权限​​

​​3. 使用 SSH 调试模式​​

​​4. 尝试备用端口(443)​​

​​5. 检查防火墙或代理设置​​

​​6. 更新 SSH 客户端或使用旧版协议​​

​​7. 检查 GitHub 服务状态​​

​​8. 其他可能性​​

最终验证

附:SSH 连接流程图解


img

当使用 git clonegit push 或直接测试 SSH 连接 GitHub(如 ssh -T git@github.com)时,遇到 Connection closed by remote host 错误,可能是由网络配置、SSH 密钥问题或 GitHub 服务限制导致。以下是逐步排查和解决方法:


​1. 检查网络连通性​

确保你的网络能正常访问 GitHub 的 SSH 端口(默认 22 端口):

# 测试 GitHub 的 SSH 端口是否可达
telnet github.com 22

# 或使用更现代的工具
nc -zv github.com 22
  • ​若不可达​​:可能是防火墙、代理或 ISP 屏蔽了端口。尝试以下方法:
    • ​关闭 VPN/代理​​:某些 VPN 或代理会干扰 SSH 连接。
    • ​更换网络环境​​:例如切换到手机热点。
    • ​使用 HTTPS 替代 SSH​​:临时使用 git clone https://github.com/...

​2. 验证 SSH 密钥配置​

SSH 密钥未正确配置是常见原因。

​(1) 检查公钥是否添加到 GitHub​
  • ​查看本地公钥​​:

    cat ~/.ssh/id_rsa.pub

    确保输出内容与 GitHub 账户中设置的 ​​SSH Keys​​ 完全一致(路径:Settings -> SSH and GPG Keys)。

  • ​若未添加​​:

    1. 生成新密钥(如果不存在):
      ssh-keygen -t ed25519 -C "your_email@example.com"
    2. 将公钥 ~/.ssh/id_ed25519.pub 的内容粘贴到 GitHub 的 SSH Keys 页面。
​(2) 检查私钥权限​

私钥文件权限必须为 600.ssh 目录权限为 700

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_*

​3. 使用 SSH 调试模式​

通过 -v 参数查看详细连接日志,定位失败原因:

ssh -vT git@github.com

观察输出中关键错误信息:

  • ​示例错误 1:no matching host key type found

    Unable to negotiate with xx.xx.xx.xx port 22: no matching host key type found.

    ​解决方法​​:在 ~/.ssh/config 中指定兼容的密钥类型:

    Host github.com
      Hostname ssh.github.com
      Port 443
      User git
      PubkeyAcceptedKeyTypes +ssh-rsa
      HostKeyAlgorithms +ssh-rsa
  • ​示例错误 2:Permission denied (publickey)

    debug1: Authentications that can continue: publickey
    debug1: No more authentication methods to try.
    git@github.com: Permission denied (publickey).

    ​解决方法​​:确认公钥已正确添加到 GitHub,且使用 ssh-agent 管理密钥:

    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_ed25519

​4. 尝试备用端口(443)​

如果 22 端口被屏蔽,可使用 GitHub 的 HTTPS 端口 443 进行 SSH 连接:

ssh -T -p 443 git@ssh.github.com

若成功,需永久配置 ~/.ssh/config

Host github.com
  Hostname ssh.github.com
  Port 443
  User git

​5. 检查防火墙或代理设置​
  • ​系统防火墙​​:临时关闭防火墙测试:

    # CentOS
    sudo systemctl stop firewalld
    
    # Ubuntu
    sudo ufw disable
  • ​代理配置​​:若使用代理,确保 Git 和 SSH 的代理设置正确:

    # 取消 Git 代理设置
    git config --global --unset http.proxy
    git config --global --unset https.proxy
    
    # 取消 SSH 代理(检查 ~/.ssh/config 或环境变量)
    unset SSH_AUTH_SOCK

​6. 更新 SSH 客户端或使用旧版协议​

较新的 OpenSSH 版本可能禁用不安全的算法,而旧服务器可能不兼容。尝试:

  • ​启用旧版算法​​(临时):

    ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa -T git@github.com
  • ​更新 OpenSSH​​:

    # Ubuntu/Debian
    sudo apt update && sudo apt upgrade openssh-client
    
    # CentOS
    sudo yum update openssh-clients

​7. 检查 GitHub 服务状态​

访问 GitHub Status 确认 SSH 服务是否正常。若 GitHub 出现故障,需等待其恢复。


​8. 其他可能性​
  • ​IP 被 GitHub 限制​​:频繁连接失败可能导致临时封禁,更换 IP 或等待解除。
  • ​本地 DNS 问题​​:尝试使用 8.8.8.8 作为 DNS 服务器:
    sudo echo "nameserver 8.8.8.8" >> /etc/resolv.conf

最终验证

修复后,运行以下命令测试连接:

ssh -T git@github.com

成功时会返回:

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

附:SSH 连接流程图解

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值