Using git with ssh throuhgh proxy
Pre
一般平时的环境可以直连国际万维网,所以没有什么问题。但某天在家中使用git时,虽然开着ClashX,却发现速度还是龟速,忍不了了,遂着手解决一下。
TL;DR
TroubleShooting
首先是看一下,检查一下全局的代理值
1 | echo $https_proxy |
心中一惊,这意味着全局的代理是正常的,然而速度还是慢,说明原因还没找到,need to go deeper…
检查.gitconfig文件
git config --global -e
1 | [http] |
所有的设置也都正常,按理说只要全局设置了git自动就会走代理,但是现在两个都设置了还不行。
忽然想到会不会问题不在git设置,而是在clash?
查看ClashX的Connections
打开ClashX dashboard 查看 Connections 一栏。当我使用git clone 来进行测试时,发现里面居然找不到git的相关连接。
到这里为止可算是找到了一点蛛丝马迹,但这只是表象,具体问题现在还不知道,不过猜测可能是网站不在Clash的规则里面?于是查找了规则名单,一些大型的git托管网站都在里面,所以问题不在这里。
ssh的锅
搞来搞去还是不行,想吐。但这时候我忽然想起来,会不会是ssh的锅?
于是git clone一个https形式的repository。发现Clash Connections中出现了连接,到这里算是确定了问题所在。
Solution
首先想到的是我直接使用https形式的地址不就行了吗,但是忽然发现bitbucket似乎不支持https的地址,至少是需要支持ssh形式的。于是放弃奇技淫巧,还是走正道。本来https也不够方便,还有可能要时不时输个密码。
于是网上搜索一番,ssh走代理的方式:
1 | ~/.ssh/config |
nc 也就是网上所说的“瑞士军刀”netcat
再次执行git clone 测试,丝滑~
1 | git clone ************************** |
Appendix
注意终端里各个程序不一定都会走全局代理,这个ssh就是典型,需要看具体应用的代理方式是如何设置的。