设置socks代理的命令

M.A*_*hah 6 command-line scripts proxy socks5 system-settings

我正在通过 ssh 隧道使用袜子代理

ssh -D 1080 -f -C -q -N <user>@<server>
Run Code Online (Sandbox Code Playgroud)

当我在 中设置代理时System settings > Network > Network proxy,所有应用程序Chromium, Firefox, apt, ...都在跟随代理。

在此处输入图片说明

现在我想写一个自动化的shell脚本,我如何Network proxy通过终端设置?

我发现的只是“使用一些第三方软件,例如Tsocks和...”。但正如我所说,ubuntu 它自己可以在没有任何第三方软件的情况下做到这一点,所以不想使用它们。

我想要的只是使用终端中的命令设置Network proxy

M.A*_*hah 5

正如@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
Run Code Online (Sandbox Code Playgroud)

编辑environment和运行需要以 root 身份运行 apt.conf

编辑:


但重要的是要知道org.gnome.system.proxy以 root 身份进行编辑对当前用户没有影响,因此它们应该以普通用户身份运行。所以不要用 sudo 运行脚本