My Blog · RSS

debian12中让git使用socker5代理

2025-08-28 00:00

Debian12 中让 Git 使用 SOCKS5 代理

在 Debian12 上使用 Git 访问远程仓库时,如果在公司或校园网络环境下,需要通过代理。很多人只配置了 http.proxy,发现 git push 无法使用,这往往与 仓库使用的协议不同 有关。下面整理一下完整解决方法。

SSH 链接和 HTTPS 链接的区别

在 GitHub 等平台上通常有两种 clone 地址:

  • SSH:如 [email protected]:git/git.git,走的是 SSH 协议,如果要代理,需要用 SOCKS5
  • HTTPS:如 https://github.com/git/git.git,走的是 HTTP/HTTPS 协议,可以直接用 Git 内置的 http.proxy

因此,是否能成功走代理,取决于你使用的仓库地址类型。

方法一:HTTPS 仓库使用 http.proxy 协议

如果仓库是 https:// 开头的,直接在本地配置即可:

git config --local http.proxy http://127.0.0.1:7090
git config --local https.proxy http://127.0.0.1:7090

这样,Git 在访问 HTTPS 仓库时会通过 HTTP 代理转发。

方法二:SSH 仓库使用 SOCKS5 协议

如果仓库是 [email protected] 这种 SSH 地址,需要在 SSH 配置文件中指定 SOCKS5 代理。

编辑 ~/.ssh/config

vim  ~/.ssh/config
Host github.com
  User git
  Hostname github.com
  ProxyCommand nc -X 5 -x 127.0.0.1:7090 %h %p

解释:

  • Host github.com:匹配目标主机 GitHub。
  • User git:使用 git 用户(这是 GitHub 要求的)。
  • Hostname github.com:实际连接的地址。
  • ProxyCommand:通过 nc(netcat)来走代理。
  • -X 5:指定使用 SOCKS5。
  • -x 127.0.0.1:7090:本地 SOCKS5 代理地址与端口。
  • %h %p:目标主机与端口参数。

配置完成后,git push 等 SSH 操作就会自动通过代理。


Debian12 中 nc 的特殊处理

Debian 默认安装的 netcat-traditional 版本功能较少,-X 5-x 参数不可用:

dyq@xps-debian:~/.ssh$ nc -h
[v1.10-47]
...

解决方法是安装 openbsd 版本的 netcat

sudo apt-get install netcat-openbsd

再次确认参数:

nc -h
OpenBSD netcat (Debian patchlevel ...)
...
    -X proto    Proxy protocol: "4", "5" (SOCKS) or "connect"
    -x addr[:port] Specify proxy address and port

此时就支持 SOCKS5 转发,SSH 配置中的 ProxyCommand 才能正常工作。


总结

  • HTTPS 仓库 → 用 git config http.proxy/https.proxy
  • SSH 仓库 → 在 ~/.ssh/config 配置 ProxyCommand,并确保安装了 netcat-openbsd
  • Debian12 默认 nc 版本不支持 SOCKS5,需要换成 netcat-openbsd

这样,无论是 git clone 还是 git push,都能顺利走代理。 ✅

好的 👍 我帮你把文章最后的总结部分改成一个清晰的对比表格。这样一眼就能看出 HTTPS 和 SSH 两种仓库地址的区别与配置方法。


总结对比表

仓库类型示例地址使用的协议代理方式配置方法
HTTPS 仓库https://github.com/git/git.gitHTTP/HTTPSHTTP Proxygit config --local http.proxy http://127.0.0.1:7090 git config --local https.proxy http://127.0.0.1:7090
SSH 仓库[email protected]:git/git.gitSSHSOCKS5 Proxy~/.ssh/config 中添加: <br>Host github.com<br> User git<br> Hostname github.com<br> ProxyCommand nc -X 5 -x 127.0.0.1:7090 %h %p<br>(需安装 netcat-openbsd