侧边栏壁纸
博主头像
博主等级

秋风清,秋月明,落叶聚还散,寒鸦息复惊,相思相见知何日,此时此夜难为情!

  • 累计撰写 20 篇文章
  • 累计创建 32 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

通过配置 ~/.ssh/config 使用代理加速 GitHub 的 SSH 克隆

尘
2025-02-10 / 0 评论 / 0 点赞 / 66 阅读 / 3612 字
温馨提示:
本文最后更新于 2025-02-12,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

通过配置 ~/.ssh/config 使用代理加速 GitHub 的 SSH 克隆

[TOC]

在使用 GitHub 时,尤其是在一些网络受限的环境中,直接通过 SSH 克隆仓库可能会遇到连接慢或者连接失败的情况。为了加速 GitHub 的克隆操作,可以通过配置 ~/.ssh/config 文件来使用代理服务器,从而提高连接速度,绕过某些网络限制。

本文介绍如何配置 SSH 通过代理加速 GitHub 的克隆操作,主要涵盖两种常见的代理类型:SOCKS 代理和 HTTP 代理。

1. 使用 ~/.ssh/config 配置代理

首先,确保已经有一个可以使用的代理服务(例如,SOCKS5 或 HTTP 代理)。然后,可以在 SSH 配置文件中添加相关的代理设置。

1.1 SOCKS 代理

如果代理服务器是 SOCKS5 代理(例如使用 sshShadowsocks 等),可以按照以下步骤配置:

  1. 打开或者创建 ~/.ssh/config 文件。
  2. 在文件中添加以下内容:
Host github.com
  User git
  Hostname github.com
  Port 22
  ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p
  IdentityFile ~/.ssh/id_rsa

配置解释

  • User git:GitHub 的 SSH 连接必须使用 git 作为用户名,这是 GitHub 的要求。
  • Hostname github.com:GitHub 的主机名。
  • Port 22:GitHub SSH 连接的默认端口。
  • ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p:这是通过 nc(netcat)工具指定 SOCKS5 代理进行连接。-X 5 表示使用 SOCKS5 协议,-x 127.0.0.1:1080 指定代理的地址和端口。%h%p 会被自动替换为主机名和端口。
  • IdentityFile ~/.ssh/id_rsa:指定 SSH 使用的私钥文件。

2. 使用 HTTP 代理

如果代理服务是 HTTP 代理,配置的方法与 SOCKS 代理类似。以下是配置示例:

Host github.com
  User git
  Hostname github.com
  Port 22
  ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p
  IdentityFile ~/.ssh/id_rsa

同样地,可以根据 HTTP 代理的实际地址和端口进行修改。

Windows下的Git Bash 没有nc命令(netcat命令)。
如需使用SSH代理请使用下面的命令替换~/.ssh/config文件内容(请测试是有connect命令)

Host github.com
  User git
  Hostname github.com
  Port 22
  ProxyCommand connect -H 127.0.0.1:7897 %h %p
  IdentityFile C:/Users/chen/.ssh/id_ed25519

connect命令的用法:

usage: C:\Program Files\Git\mingw64\bin\connect.exe [-dnhst45] [-p local-port]
          [-H proxy-server[:port]] [-S [user@]socks-server[:port]]
          [-T proxy-server[:port]]
          [-c telnet-proxy-command]
          host port

3. 配置代理时的注意事项

  • 代理服务:无论是 SOCKS 代理还是 HTTP 代理,需要确保代理服务已正确配置并在运行状态。可以通过命令行工具(如 curlping)测试代理是否可用。
  • 代理身份验证:如果代理服务需要身份验证,需要将用户名和密码添加到 ProxyCommand 中。格式为:-x user:password@127.0.0.1:1080。例如:
ProxyCommand nc -X 5 -x username:password@127.0.0.1:1080 %h %p
  • User git:GitHub 的 SSH 连接要求用户名必须是 git,无需修改此项。这个配置是固定的。

4. 测试配置

完成配置后,可以使用以下命令来测试 GitHub SSH 连接是否通过代理进行:

ssh -T git@github.com

如果看到类似下面的输出,说明配置成功:

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

5. 总结

通过在 ~/.ssh/config 中配置代理,可以加速 GitHub 的 SSH 克隆操作,尤其在网络受限或连接缓慢的环境中,代理可以帮助绕过一些网络限制并提高连接的稳定性。无论是 SOCKS5 代理还是 HTTP 代理,只需要根据需求修改配置即可。

希望这篇文章能帮助更好地配置 GitHub 的 SSH 连接并提高克隆速度。如果遇到任何问题,欢迎随时留言讨论!

0

评论区