<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Network on LeafCxy's Blog</title><link>https://leafcxy.github.io/tags/network/</link><description>Recent content in Network on LeafCxy's Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 11 Aug 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://leafcxy.github.io/tags/network/index.xml" rel="self" type="application/rss+xml"/><item><title>Git 代理配置完全指南</title><link>https://leafcxy.github.io/posts/git-proxy-guide/</link><pubDate>Tue, 11 Aug 2026 10:00:00 +0800</pubDate><guid>https://leafcxy.github.io/posts/git-proxy-guide/</guid><description>&lt;p&gt;这篇文章梳理 Git 中所有代理配置方式，从简单的 &lt;code&gt;git config&lt;/code&gt; 到 SSH 协议的 SOCKS5 隧道，一份指南全搞定。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id="为什么需要代理"&gt;为什么需要代理&lt;/h2&gt;
&lt;p&gt;访问 GitHub、GitLab 等平台时，有时会遇到 &lt;code&gt;git clone&lt;/code&gt; 速度极慢甚至超时的情况。尤其是在国内网络环境下，给 Git 配置代理几乎是必备技能。&lt;/p&gt;
&lt;div class="mermaid" align="center"&gt;flowchart LR
A[你的电脑] --&gt; B{需要代理？}
B --&gt;|直连通畅| C[直接连接 Git 服务器]
B --&gt;|速度慢/超时| D[代理服务器]
D --&gt; E[Git 服务器&lt;br/&gt;github.com&lt;br/&gt;gitlab.com]
C --&gt; E&lt;/div&gt;
&lt;h2 id="配置方式总览"&gt;配置方式总览&lt;/h2&gt;
&lt;p&gt;Git 提供多种配置代理的途径，优先级从高到低：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;配置方式&lt;/th&gt;
&lt;th&gt;持久性&lt;/th&gt;
&lt;th&gt;作用范围&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-c&lt;/code&gt; 命令行参数&lt;/td&gt;
&lt;td&gt;单次命令&lt;/td&gt;
&lt;td&gt;单仓库&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git config --local&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;写入 &lt;code&gt;.git/config&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;单个仓库&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git config --global&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;写入 &lt;code&gt;~/.gitconfig&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;当前用户&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;环境变量&lt;/td&gt;
&lt;td&gt;Shell 会话级&lt;/td&gt;
&lt;td&gt;当前终端&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="mermaid" align="center"&gt;graph TD
A[Git 发起网络请求] --&gt; B{有 -c 参数？}
B --&gt;|是| F[使用 -c 指定的代理]
B --&gt;|否| C{有 local 配置？}
C --&gt;|是| G[使用 local 代理]
C --&gt;|否| D{有 global 配置？}
D --&gt;|是| H[使用 global 代理]
D --&gt;|否| E{有环境变量？}
E --&gt;|是| I[使用环境变量代理]
E --&gt;|否| J[直连]&lt;/div&gt;
&lt;h2 id="一httphttps-代理"&gt;一、HTTP/HTTPS 代理&lt;/h2&gt;
&lt;p&gt;这是最常用的方式，适用于 &lt;code&gt;https://&lt;/code&gt; 协议的仓库。&lt;/p&gt;
&lt;h3 id="11-配置命令"&gt;1.1 配置命令&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 全局设置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global http.proxy http://127.0.0.1:7890
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global https.proxy http://127.0.0.1:7890
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 仅对当前仓库设置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --local http.proxy http://127.0.0.1:7890
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 查看当前配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global --get http.proxy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 取消代理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global --unset http.proxy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global --unset https.proxy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="12-带认证的代理"&gt;1.2 带认证的代理&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 用户名密码认证&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global http.proxy http://user:pass@127.0.0.1:7890
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 特殊字符需要 URL 编码，@ → %40，: → %3A&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global http.proxy http://user:p%40ss@127.0.0.1:7890
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="13-针对特定域名"&gt;1.3 针对特定域名&lt;/h3&gt;
&lt;p&gt;只想给 GitHub 走代理，公司内网 GitLab 直连？按域名精准控制：&lt;/p&gt;</description></item><item><title>设置代理解决github被墙</title><link>https://leafcxy.github.io/posts/2025-07-22-12/</link><pubDate>Tue, 22 Jul 2025 08:42:22 +0000</pubDate><guid>https://leafcxy.github.io/posts/2025-07-22-12/</guid><description>&lt;p&gt;虽然有梯子，可以正常访问github页面，但是在发现“git clone”命令速度特别慢，有时还经常卡掉。可以通过设置git 代理，解决被墙问题。&lt;/p&gt;
&lt;p&gt;git 有几种传输协议，在Github上主要用到的是Https和SSH协议。所以我们要做的是对git 命令的https 以及ssh流量做代理。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id="设置https-代理"&gt;设置https 代理&lt;/h2&gt;
&lt;p&gt;Git代理有两种设置方式，分别是全局代理和只对Github代理，建议只对github 代理。代理协议也有两种，分别是使用http代理和使用socks5代理，建议使用socks5代理。注意下面代码的端口号需要根据你自己的代理端口设定，比如我的代理socks端口是51837。&lt;/p&gt;
&lt;h3 id="全局设置不推荐"&gt;全局设置（不推荐）&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#使用http代理 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global http.proxy http://127.0.0.1:58591
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global https.proxy https://127.0.0.1:58591
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#使用socks5代理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global http.proxy socks5://127.0.0.1:51837
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global https.proxy socks5://127.0.0.1:51837
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="只对github代理推荐"&gt;只对Github代理（推荐）&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#使用socks5代理（推荐）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global http.https://github.com.proxy socks5://127.0.0.1:51837
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#使用http代理（不推荐）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global http.https://github.com.proxy http://127.0.0.1:58591
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="取消代理"&gt;取消代理&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global --unset http.proxy git config --global --unset https.proxy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="设置ssh代理终极解决方案"&gt;设置ssh代理（终极解决方案）&lt;/h3&gt;
&lt;p&gt;https代理存在一个局限，那就是没有办法做身份验证，每次拉取私库或者推送代码时，都需要输入github的账号和密码，非常痛苦。
设置ssh代理前，请确保你已经设置ssh key。可以参考在 github 上添加 SSH key 完成设置
更进一步是设置ssh代理。只需要配置一个config就可以了。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Linux、MacOS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;vi ~/.ssh/config
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Windows &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;到C:&lt;span style="color:#ae81ff"&gt;\U&lt;/span&gt;sers&lt;span style="color:#ae81ff"&gt;\y&lt;/span&gt;our_user_name&lt;span style="color:#ae81ff"&gt;\.&lt;/span&gt;ssh目录下，新建一个config文件（无后缀名）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将下面内容加到config文件中即可&lt;/p&gt;
&lt;p&gt;对于windows用户，代理会用到connect.exe，你如果安装了Git都会自带connect.exe，如我的路径为C:\APP\Git\mingw64\bin\connect&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#Windows用户，注意替换你的端口号和connect.exe的路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ProxyCommand &lt;span style="color:#e6db74"&gt;&amp;#34;C:\APP\Git\mingw64\bin\connect&amp;#34;&lt;/span&gt; -S 127.0.0.1:51837 -a none %h %p
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#MacOS用户用下方这条命令，注意替换你的端口号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ProxyCommand nc -v -x 127.0.0.1:51837 %h %p&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Host github.com
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; User git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Port &lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Hostname github.com
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 注意修改路径为你的路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; IdentityFile &lt;span style="color:#e6db74"&gt;&amp;#34;C:\Users\Your_User_Name\.ssh\id_rsa&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; TCPKeepAlive yes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Host ssh.github.com
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; User git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Port &lt;span style="color:#ae81ff"&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Hostname ssh.github.com
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 注意修改路径为你的路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; IdentityFile &lt;span style="color:#e6db74"&gt;&amp;#34;C:\Users\Your_User_Name\.ssh\id_rsa&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; TCPKeepAlive yes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;保存后文件后测试方法如下，返回successful之类的就成功了。&lt;/p&gt;</description></item></channel></rss>