我正在通过 ssh 隧道使用 socks 代理
ssh -D 1080 -f -C -q -N <user>@<server>
当我在 中设置代理时System settings > Network > Network proxy
,所有类似的应用程序Chromium, Firefox, apt, ...
都遵循代理。
现在我想编写一个用于自动化的shell脚本,如何Network proxy
通过终端进行设置?
我发现“使用一些第三方软件,如Tsocks
...”。但正如我所说,ubuntu 本身不需要任何第三方软件就可以做到这一点,所以不想使用它们。
我想要的是Network proxy
使用终端中的命令设置。
答案1
正如@taifwa所说,Ubuntu 中的系统范围代理设置就是解决方案。
这是我的脚本:
ssh -D ${LOCAL_PORT} -f -C -q -N ${REMOTE_USER}@${REMOTE_HOST} -p ${REMOTE_PORT}
#set socks setting in System settings > Network > network proxy
gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.socks port ${LOCAL_PORT}
gsettings set org.gnome.system.proxy.socks host 'localhost'
gsettings set org.gnome.system.proxy ignore-hosts "['localhost', '127.0.0.0/8', '${LOCAL_RANGE}', '::1']"
sudo su <<-EOF
#environment settings
echo "socks_proxy='socks://localhost:${LOCAL_PORT}/'" >> /etc/environment
#apt settings
echo "Acquire::socks::proxy 'socks://localhost:$LOCAL_PORT/';" >> /etc/apt/apt.conf
EOF
需要以 root 身份运行才能进行编辑 ,environment
并且apt.conf
编辑:
但需要知道的是,
org.gnome.system.proxy
以 root 身份编辑对当前用户没有影响,因此他们应该以普通用户身份运行。所以不要使用 sudo 运行脚本