由于某魔法结界的存在,我们在从某全球最大同性社交网站下载项目源码或者提交代码到该罪恶的社交网站时,
经常会出现各种异常。那么,我们能不能施展魔法,让我们的 git/ssh 通过魔法上网呢?
(本文的配置并不是给浏览器用的,不适合用来给浏览器魔法上网。本文重点在 git/ssh,需要魔法上网的请绕道。)
本文假设你已经有了一个 socks5 协议的代理了。
关于怎么设立 socks5 协议的代理,这里就不赘述了,到处都有介绍,这里说多了我怕我会被魔法封印。
本文以 Linux 环境下为准(我使用的是 ArchLinux)。 Windows 下的 git-bash 同理,但未经验证。
127.0.0.1:1081
为例。在你用户目录下,建立 .ssh/config
,在里面添加如下配置:
# 将这里的 User、Hostname、Port 替换成你需要用 ssh 登录的服务器的配置。
# Host 可以认为像是书签一样的东西,当你用 Host 指明的字符串代替你服务器的 IP/域名 时,
# 便会应用该节点下的配置。当然你也可以将 Host 和 Hostname 设置成一样。
Host yourserver.com
User someone
Hostname yourserver.com
Port 22
Proxycommand /usr/bin/ncat --proxy 127.0.0.1:1081 --proxy-type socks5 %h %p
# 如果是给某同性社交网站用的(走 ssh 协议),可以直接使用该配置。
# 其它类似网站的话,替换掉域名( Host/Hostname)即可。
# 可以看出,ssh 协议的 git 客户端,配置与 ssh 一模一样。
# 需要注意的是这里的 User 应该是 git,而不是你在该网站上注册的用户名。
# (虽然有些提供 git 仓库托管的网站会用其它用户名,这种情况根据网站配置。)
Host github.com
User git
Hostname github.com
Port 22
Proxycommand /usr/bin/ncat --proxy 127.0.0.1:1081 --proxy-type socks5 %h %p
该方式的配置中,如果 Host 设置为 *
,那么 Host *
对应的配置会被应用到所有没有独立配置
的 ssh 连接中,包括使用了 ssh 协议的 git 操作。
针对 git 全局开启 http/https 协议代理:
git config --global http.proxy 'socks5://127.0.0.1:1081'
git config --global https.proxy 'socks5://127.0.0.1:1081'
这是针对全局开启,一般在 git clone
时用处较大。
针对单个仓库的话,在 clone 完成后,进入仓库目录下设置,去掉 --global
参数即可。
建立 /opt/bin/socks5proxywrapper
文件,并将该文件设置为可执行权限,文件内容如下:
#!/bin/sh
/usr/bin/ncat --proxy 127.0.0.1:1081 --proxy-type socks5 "$@"
配置 git,使其全局使用该代理:
git config --global core.gitProxy '/opt/bin/socks5proxywrapper'
也可针对特定域名启用代理,如:
git config --global core.gitProxy '/opt/bin/socks5proxywrapper for git.kernel.org'
临时启用代理而不想将配置保存下来的话,可以使用设置环境变量的方法:
export GIT_PROXY_COMMAND=/opt/bin/socks5proxywrapper
本文只是摘选了其中一部分配置。
不管是哪一个协议,git 的代理都有非常多的方式可以配置,灵活性也很大。这里摘选的大部分是比较简单
粗暴的配置,而且响应主题:使用 socks5 协议。
如果有兴趣,可以 man git-config
看看,或者 google 上找找别人的经验之谈。
这里给出我写本文的几个参考链接:
https://blog.fazero.me/2015/07/11/%e7%94%a8shadowsocks%e5%8a%a0%e9%80%9fgit-clone/
https://segmentfault.com/q/1010000000118837