Linux上的命令行代理工具

阿里云的AI白票试用还是很香的,b站顺便一搜有很多教程,跑个lora训练或者SD webui之类的
但难免会遇到要拉更新之类的情况,github和huggingface.co速度慢或者连不上去也经常遇到,除了使用镜像站以外,还有可以使用代理来加速

先通SOCKS5!

安装ss

先贴上需要用到的软件github:
https://github.com/shadowsocks/shadowsocks-libev

以及大概解释了什么是ss2,ss-go,ss-libev
https://shadowsocks5.github.io/en/spec/Implementations.html

在云端实例命令行下,需要个尽可能简洁小巧又好用的工具,ss-libev可能会是我们的首选,ss-libev是一个轻量级安全 SOCKS5 代理,适用于嵌入式设备和低端设备,用纯 C 编写,体积小巧比较高效
我的云计算镜像是基于ubuntu22.04的
要安装它,直接

1
2
sudo apt update
sudo apt install shadowsocks-libev

配置ss

然后编辑设置:

1
2
# Edit the configuration file
sudo vim /etc/shadowsocks-libev/config.json

config.json

1
2
3
4
5
6
7
8
9
{
"server":"my_server_ip",
"mode":"tcp_and_udp",
"server_port":8388,
"local_port":1080,
"password":"barfoo!",
"timeout":600,
"method":"chacha20-ietf-poly1305"
}
  • server :您的主机名或服务器 IP (IPv4/IPv6)
  • mode :模式一般不动
  • server_port :服务器端口号
  • local_port :本地端口号,一般默认就1080
  • password :密码
  • timeout :连接超时(以秒为单位)
  • method :加密算法

这些信息只要你找的代理供应商支持ss协议应该都可以拿到

ps顺便给同学们复习下vim,懒得用vim的可以不看,按a进入编辑模式,方向键移动光标,编辑完成后按两下 ctrl+c 进入指令模式然后:wq!保存更改并退出,如果直接退出不保存是:q!

启动ss客户端

任意目录输入

1
ss-local

即可做为客户端启动
这里我启动成功以后显示:

ps这个软件可以以服务端启动,同样也是修改上面的etc/shadowsocks-libev/config.json,这里挺容易混淆啊,我这里的目标是想给我的云上GPU计算实例代理加速,所以以客户端启动就行
如果要以服务端启动

1
systemctl start shadowsocks-libev.service

systemctl如果云上镜像里没有(大概率没有,容器镜像谁会带systemctl或者systemd呢~),可以尝试

1
sudo /etc/init.d/shadowsocks-libev start

安装proxychains使软件走代理

上面只做到了客户端使用SOCKS5打通代理,接下来再用另外一个软件使我们指定的命令/app走这条SOCKS5线路,也就是需要个SOCKS5转HTTP的工具来为我们所用
这里发现了proxychains

ProxyChains 是一个强制应用的 TCP 连接通过代理的工具,支持 Tor、HTTP、与 Socks 代理。ProxyChains 只会将当前应用的 TCP 连接转发至代理,而非全局代理。

安装proxychains

1
sudo apt install proxychains

超快就安装好了

配置

1
vim /etc/proxychains.conf
1
2
3
4
5
6
7
8
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
#socks4 127.0.0.1 9050

# example
socks5 127.0.0.1 1080

使用

ProxyChains 的使用方式非常简单,直接在应用程序前加上 proxychains 即可
例如:

1
proxychains git clone https://github.com/rofl0r/proxychains-ng

但是据说ping是不行的,因为pin并不是TCP而是ICMP,所以可以尝试proxychains ping google.com,总之我是能解析出IP但是会卡住ping不了,问题不大

试试看是不是通了:
先试试

1
curl cip.cc

得到

我们加上proxychains以后

1
proxychains curl cip.cc

看!效果立竿见影,而且可以灵活使用

另外一种方法或许可以不装proxychains
直接设置变量

1
2
export http_proxy="socks5://127.0.0.1:1080"
export https_proxy="socks5://127.0.0.1:1080"

可能也可以但没试过

其他一些镜像方案:

huggingface

运行python时前加HF_ENDPOINT=https://hf-mirror.com,这样就可以实现后续走镜像加速了

1
HF_ENDPOINT=https://hf-mirror.com python your_script.py

详细用法:
https://hf-mirror.com/

github

示例用法,直接github域名前加https://mirror.ghproxy.com/

1
https://mirror.ghproxy.com/https://github.com/d8ahazard/sd_dreambooth_extension

详细见:
https://mirror.ghproxy.com/
有些部署文件里还是用的之前的域名https://ghproxy.com/,已失效,改用二级域名https://mirror.ghproxy.com/即可

附录

本文参考文章

linux命令行代理神器-proxychains
https://zhuanlan.zhihu.com/p/166375631

Linux 让终端走代理的几种方法
https://zhuanlan.zhihu.com/p/46973701

ss服务端和客户端安装
https://mkmerich.com/2018-09-23/shadowsocks%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%92%8C%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%AE%89%E8%A3%85.html

基本概念,什么是ss什么是socks5
https://reezon.github.io/2018/05/23/%E5%85%B3%E4%BA%8Ess(%E9%85%B8%E9%85%B8)%E5%92%8Cssr(%E9%85%B8%E9%85%B8%E4%B9%B3)%EF%BC%8C%E8%BF%98%E6%9C%89vpn%E5%92%8Csocks5/

使用Curl时可以直接用socks5
https://blog.emacsos.com/use-socks5-proxy-in-curl.html

其他类似方案软件

sshuttle
https://github.com/sshuttle/sshuttle

yuhaiin
https://github.com/yuhaiin/yuhaiin

clash-verge
https://github.com/zzzgydi/clash-verge