概述
问题起因是git clone 代码的时候,发现会卡住拉取不下来
因此边使用telnet工具去测试一下端口是否是通的
telnet github.com 22 |
如果端口通的,应该会如下图展示
否则端口是不通的。
对于这种情况,我们一般是需要通过代理服务器中转流量。
Linux的http代理
linux原生就支持通过https_proxy, http_proxy两个环境变量,去分别设置http/https的代理。
简单回顾下用法示例:
设置环境变量,会话内的所有http流量都走http://localhost:7890转发 |
如果需要鉴权,也可以在代理地址用加入用户名和密码
设置环境变量,会话内的所有http流量都走http://localhost:7890转发 |
还可以添加代理规则的豁免,比如对某些内网IP和域名进行跳过
export NO_PROXY=127.0.0.1,aaa.com |
上述命令会对当前会话起的程序生效,如果需要一登录就生效,需要添加到~/.bashrc文件末尾去
此外注意,对于一些后台服务,比如docker之类的,需要转而去systemctl service配置中,去设置Env,来使环境变量能够传递到进程中去的。
但是对于其他TCP协议,就不能用这种方式了。
proxychains
是用于解决TCP流量的代理问题的。
安装
以Ubuntu 24.04 为例
sudo apt-get install proxychains |
对于发行版包中没有的, 可以自行编译安装
git clone https://github.com/haad/proxychains |
用法
基本用法如下:
proxychains <command> |
在使用之前,需要先添加配置文件,支持多个配置文件配置优先级,具体如https://github.com/haad/proxychains?tab=readme-ov-file#configuration 所示
比如我有一个http的代理127.0.0.1:7890, 可以这样修改配置(/etc/proxychains.conf):
## 其他部分不变 |
然后便可以愉快的去拉取github仓库了
proxychains git clone https://github.com/deepwzh/deepwzh |