当前位置:首页 > 问答 > 正文

用Shadowsocks在终端里搞定科学上网那些事儿,步骤其实没那么复杂

整理自网络技术社区分享,具体来源包括V2EX、某技术博客及GitHub上的开源项目文档)

先说说为啥要在终端里配Shadowsocks,有时候你需要用命令行下载国外资源,比如跑个Python的pip install,或者用wget拉个Docker镜像,明明浏览器能正常访问,终端却卡着不动,这是因为终端不会自动走你的图形界面代理,得单独配置。

第一步:准备好你的节点信息 你得先有个Shadowsocks服务端,可以是自己租的VPS搭的,也可以是买的现成服务,拿到这几个关键信息:服务器IP地址、端口、加密方式(比如aes-256-gfb)、密码,别急着往下操作,先把这些记在记事本里。

第二步:安装Shadowsocks客户端 别被“客户端”吓到,在终端里就是个命令行工具,打开你的Mac终端或Linux shell,用包管理器安装,比如Mac用Homebrew:

brew install shadowsocks-libev

如果是Ubuntu/Debian:

sudo apt-get install shadowsocks-libev

Windows用户可以用WSL子系统操作,或者直接下载exe版本(这里主要讲跨平台方案)。

第三步:写配置文件 新建个叫ss.json的文件,扔进home目录就行,内容类似这样:

{
  "server":"你的服务器IP",
  "server_port":8080,
  "local_port":1080,
  "password":"你的密码",
  "method":"aes-256-gfb"
}

注意local_port是本地代理端口,后面会用到,怕手写出错的话,有些服务商直接提供配置文件下载,拖进来改个名就能用。

用Shadowsocks在终端里搞定科学上网那些事儿,步骤其实没那么复杂

第四步:启动代理 终端里输入:

ss-local -c ~/ss.json

看到"INFO: listening at 127.0.0.1:1080"就是成功了,这时别关终端窗口!最小化就行,一关代理就断了。

第五步:让终端流量走代理 关键来了!现在代理只在本地1080端口监听,得告诉终端怎么用它,分两种方法:

  1. 临时方案(关掉终端就失效): 在需要代理的命令前加上环境变量,

    http_proxy=socks5://127.0.0.1:1080 https_proxy=socks5://127.0.0.1:1080 curl https://google.com

    或者先开个代理子shell:

    用Shadowsocks在终端里搞定科学上网那些事儿,步骤其实没那么复杂

    export http_proxy=socks5://127.0.0.1:1080
    export https_proxy=socks5://127.0.0.1:1080

    之后再执行的命令都会走代理。

  2. 长期方案: 在~/.bashrc或~/.zshrc文件末尾加上:

    alias setproxy='export http_proxy=socks5://127.0.0.1:1080 https_proxy=socks5://127.0.0.1:1080'
    alias unsetproxy='unset http_proxy https_proxy'

    这样以后打开终端,先输入setproxy开启代理,用完unsetproxy关闭。

测试一下: 配完执行curl -I https://www.google.com,如果返回HTTP/2 200就成功了,要是报错,检查这几点:ss-local进程是否在运行、密码端口是否填错、服务器防火墙是否放行端口。

进阶技巧

  • 用nohup或tmux让代理后台运行,避免终端窗口占用
  • 想全局代理可以搭配Proxychains,命令前加proxychains4就行
  • 服务器不稳定时,试试用kcptun加速(GitHub有详细教程)

最后提醒:终端代理只影响当前环境,不会干扰浏览器正常上网,如果遇到pip下载慢,除了开代理,也可以换国内源解决,其实日常开发中,更推荐用Proxifier这类工具自动分流,但纯终端方案胜在简单可控,适合服务器运维或临时需求。