克隆GitHub代码时连接超时的问题

解决克隆GitHub代码时连接超时的问题

问题描述

在使用Git尝试克隆GitHub代码仓库到本地时(此前正常),遇到了以下错误:

ssh: connect to host github.com port 22: Connection timed out
Please make sure you have the correct access rights
and the repository exists.

通过执行 ssh -T git@github.com 测试SSH连接,同样出现端口22连接超时的问题。

解决方案

步骤1:检查和修改SSH配置文件

  1. 找到或创建.ssh目录
    在终端中执行以下命令打开.ssh文件夹:

    open ~/.ssh
    

    如果该文件夹不存在,表示之前没有安装过SSH且未配置SSH密钥,请参考Github配置SSH密钥。由于本文不是初次配置SSH,因此~/.ssh默认存在

  2. 创建并编辑config文件
    使用文本编辑器(如TextEdit或VS Code)创建一个名为 config 的文件(无后缀),并在其中添加以下内容:

    Host github.com
    User YourEmail  # 替换为你的GitHub邮箱
    Hostname ssh.github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa
    Port 443
    

以上这段配置的作用是:

  • 指定 GitHub 的 SSH 入口点:通过 ssh.github.com 和端口 443 连接。
  • 使用公钥认证:确保连接安全且无需输入密码。
  • 关联你的私钥文件:用于验证身份。

步骤2:验证配置

  1. 保存文件后,再次执行以下命令测试连接:

    ssh -T git@github.com
    
  2. 如果出现提示信息:

    The authenticity of host '[ssh.github.com]:443 ([20.205.243.166]:443)' can't be established.
    RSA key fingerprint is SHA256:...
    Are you sure you want to continue connecting (yes/no)?
    

    输入 yes 并按回车键。

  3. 成功验证后,会显示:

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

验证Git是否正常工作

经过以上步骤配置后,再次尝试克隆GitHub上的代码仓库,已经成功。

总结

如果你在克隆或者上传GitHub代码仓库碰到问题时,可以检查以下几点:

  • 确保你的 GitHub 账号已经添加了对应的公钥。
  • 确保 ~/.ssh/id_rsa 文件存在(如果不存在,请重新生成 SSH 密钥对)。
  • 确保网络环境允许通过端口 443 连接。

拓展

SSH Config配置文件中每条指令的详细解释:


1. Host github.com

  • 作用:指定这条配置仅适用于目标主机名是 github.com 的连接。
  • 含义:当使用 git clone 或其他 Git 操作连接到 GitHub 时,SSH 客户端会自动加载这一段配置。

2. User YourEmail

  • 作用:指定在连接 GitHub 时使用的用户名(这里实际上是你的 GitHub 邮箱地址)。
  • 含义:GitHub 使用 SSH 密钥进行身份验证,默认情况下需要将你的邮箱地址作为标识符。
  • 注意:你需要将 YourEmail 替换为你的实际 GitHub 登录邮箱。

3. Hostname ssh.github.com

  • 作用:指定连接的目标主机名实际上是 ssh.github.com,而不是直接连接到 github.com
  • 含义:GitHub 提供了一个专门用于 SSH 连接的入口点 ssh.github.com,通过这个地址可以更稳定地进行 SSH 操作。

4. PreferredAuthentications publickey

  • 作用:指定使用公钥认证(Public Key Authentication)作为身份验证方式。
  • 含义
    • 这是 GitHub 推荐的认证方式。
    • 表示在连接时,SSH 客户端会尝试使用本地存储的私钥(id_rsa 或其他密钥文件)来验证你的身份。

5. IdentityFile ~/.ssh/id_rsa

  • 作用:指定用于认证的私钥文件路径。
  • 含义
    • ~/.ssh/id_rsa 是默认的 SSH 私钥文件路径,通常在初次配置 SSH 密钥时自动生成。
    • 如果你使用了其他密钥文件(如 id_ed25519),需要将路径替换为实际的密钥文件名。

6. Port 443

  • 作用:指定连接 GitHub 的端口号为 443。
  • 含义
    • 默认情况下,SSH 使用端口 22 进行通信。
    • 由于部分网络环境(如公司或学校)可能限制了对端口 22 的访问,GitHub 提供了通过端口 443 连接的方案。
    • 端口 443 是 HTTPs 的默认端口,通常不会被防火墙拦截,因此可以避免连接超时的问题。

作者信息:

posted @   warm3snow  阅读(427)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示