📚 本文是 科学上网完全指南(2026最新版) 系列教程之一,也是 Clash 教程矩阵的 Linux 平台篇。Windows/macOS 桌面端看 Clash Verge 教程,安卓端看 安卓科学上网教程,iPhone 端看 iOS 科学上网教程。
ssh 连上服务器,敲下 git clone,进度条纹丝不动;docker pull 转了半分钟,回来一看 timeout;想装个依赖,pip install 直接红色 connection refused。
如果你在 Linux 上遇到过这些,这篇文章就是写给你的。
Linux 没有图形界面,大部分翻墙客户端装不上,网上搜「Linux Clash 教程」,前排文章还在教你去一个 2023 年 11 月就已经删库跑路的 GitHub 仓库下载原版 Clash——照着做只会得到一堆死链。
说白了,2026 年在 Linux 上科学上网,正确姿势就一条:mihomo 命令行内核 + 机场订阅。装好之后 git、docker、pip、curl 全都能跑满,还能挂成系统服务开机自启。
30 秒速答
- 要花钱吗:要。机场是付费订阅,主流一年几十到一两百元,免费的没法稳定跑服务器
- 装什么:mihomo(原 Clash Meta 内核,原版 Clash 的继任者,命令和配置全兼容)
- 怎么装:
uname -m判架构 → GitHub Releases 下载对应版本 → 解压赋权 - 订阅怎么来:机场后台一键复制 Clash 订阅链接(第二节有 99 元/年入门版示例)
- 怎么跑:先前台测试,跑通后用 systemd 挂成服务,开机自启
- 怎么让命令走代理:
export http_proxy=http://127.0.0.1:7890三件套 - 适合谁:Linux 服务器、WSL、树莓派等 arm 开发板、无桌面 VPS——所有没有图形界面的环境
一、先搞清楚装什么:Clash 已死,mihomo 才是正统
这一节必须放在最前面,因为它能帮你避开 90% 的坑。
原版 Clash(Dreamacro/clash)在 2023 年 11 月作者删库停更,GitHub 仓库整个消失,所有教程里的 https://github.com/Dreamacro/clash/releases 全是死链。你现在搜到的 Linux 教程,十篇里有八篇还在教这个。
它有两个继任者:
| 内核 | 状态 | 说明 |
|---|---|---|
| Clash Premium | 已停更 | 官方闭源版,一并凉了 |
| mihomo(原 Clash Meta) | 活跃维护 | 社区主 fork,配置文件、命令行参数与原版完全兼容,还新增了 VLESS、Hysteria2、Reality 等新协议支持 |
所以结论很简单:在 Linux 上,装 mihomo。配置文件还是那个 config.yaml,机场订阅还是照常导入,你以前学的 Clash 知识全部能用。
想深入了解这两个内核的前世今生,看这篇:Mihomo 和 Clash 是什么关系。想直接动手,往下走。
二、机场订阅:怎么选、怎么拿订阅链接
命令行内核只是个「播放器」,节点才是「片源」。你得先有一个机场订阅,后面的导入才有意义。
怎么选机场
Linux 场景对机场的要求其实更挑剔:服务器 24 小时挂着,稳定性比什么都重要;拉镜像、下依赖这类操作对延迟不敏感,但对断流很敏感(下载到一半节点抽风,pip 就废了)。所以选机场重点看三点:
- 在线率和口碑:节点三天两头炸的,配 Linux 服务器就是灾难
- 原生 Clash 订阅支持:后台能直接给 Clash 订阅链接的,省去手动转换
- 多协议支持:至少有 Trojan 起步,机场全用老协议的可以直接pass
我自己主力用的是 一枝红杏,它后台对 Clash 系客户端适配比较好,订阅链接拿来即用,下面第三节的导入流程就是以它的后台为例。别的机场只要提供 Clash 订阅,操作完全一样。
怎么拿订阅链接
以一枝红杏为例,从注册到拿到订阅链接一共四步:
打开官网:https://order.yizhihongxing.org/aff.php?aff=4818,点击主页的「购买服务」按钮跳转到服务购买页面。个人用选 99/年的入门版就够了,一个月 100G、支持 5 台设备同时在线。

跳转到订购页面后,先在右上角点击
用户登录,再点击新建账户注册一个新账号,然后根据提示购买产品。
购买之后依次点击上方导航栏中的 产品服务 → 查看详情,就能看到你购买的节点信息。

打开产品详情页面,向下滑动,点击 Clash/mihomo 配置右侧的「获取地址」,在弹出的窗口中选择
复制——这就是你的订阅链接。
别的机场只要提供 Clash 订阅,操作大同小异,都是在后台「我的订阅/产品详情」里找 Clash 配置的获取入口。
拿到的那串链接长这样(示意):
https://example.com/api/v1/client/subscribe?token=xxxxxxxx
订阅链接等同于你的账号凭证,不要发给别人。 想关掉某次泄露的风险,去后台点「重置订阅链接」就能让旧链接失效、新链接生效。
三、订阅导入:拉取 Clash 配置文件
mihomo 不像桌面客户端那样点点鼠标就导入订阅,你要做的是把订阅链接变成一个 config.yaml——其实就一条命令的事。
先建个工作目录(后面所有配置都放这里):
mkdir -p /etc/mihomo && cd /etc/mihomo
用 curl 把订阅拉下来存成配置文件:
curl -L '你的订阅链接' -o /etc/mihomo/config.yaml
看到进度条走完、没报错,配置就到手了。检查一下内容对不对:
head -20 /etc/mihomo/config.yaml
正常的 Clash 订阅配置开头是 mixed-port: 7890、proxies: 这些字段。如果看到的却是一串看不懂的 Base64 乱码(dm1lc3M6Ly 开头之类的),说明你的机场只给了通用订阅(v2ray 格式),需要先转换——去 subconverter 类在线转换工具把订阅转成 Clash 格式再拉取,或者直接找机场客服要 Clash 专用订阅。这一步的完整细节看这篇:Clash 订阅链接使用指南:导入、更新与转换。
顺带说一句订阅更新:机场节点列表会变,配置文件要定期重新拉。重新执行一遍上面的 curl 命令、然后 systemctl restart mihomo 就完成了一次更新。懒得手动的,可以写个 cron 定时任务。
四、安装 mihomo:从判架构到跑起来
第一步:确认你的 CPU 架构
这步是 Linux 特有的坑——下错版本,运行时报 cannot execute binary file,很多人在这里卡半小时。
uname -m
对照下表选版本:
| 输出 | 架构 | 下载文件名里的关键词 |
|---|---|---|
x86_64 |
64 位 Intel/AMD(绝大多数服务器和 PC) | amd64 |
aarch64 |
64 位 arm(树莓派 4/5、新开发板、arm 服务器) | arm64 |
armv7l |
32 位 arm(老开发板) | armv7 |
第二步:下载
去 mihomo 的 GitHub Releases(github.com/MetaCubeX/mihomo/releases)找最新版本,按架构下载。以最常见的 amd64 为例:
curl -LO https://github.com/MetaCubeX/mihomo/releases/download/v1.19.x/mihomo-linux-amd64-v1.19.x.gz
(版本号以 Releases 页面最新为准,把 URL 里的 v1.19.x 换成实际版本。)
国内服务器直连 GitHub 很慢甚至超时,两个应急办法:一是 URL 里加镜像加速前缀(ghproxy 类服务),二是先在有网的设备上下载,再 scp 传上服务器。
第三步:解压、赋权、装到位
# 解压(mihomo 发布的是 gzip 包)
gzip -d mihomo-linux-amd64-*.gz
# 挪到系统目录并赋予执行权限
sudo mv mihomo-linux-amd64-* /usr/local/bin/mihomo
sudo chmod +x /usr/local/bin/mihomo
# 验证安装
mihomo -v
看到版本号输出(Mihomo Meta v1.19.x ...)就说明装好了。
五、运行:前台测试 → systemd 开机自启
先前台跑一次,确认能用
别急着挂后台,先手动跑一次看日志:
mihomo -d /etc/mihomo
-d 指定配置目录。正常启动会看到 Mixed(http+socks) proxy listening at: :7890 这样的日志行,说明代理端口起来了。另开一个终端窗口测试:
curl -I -x http://127.0.0.1:7890 https://www.google.com
只要能返回 HTTP 响应(200、301、302 都算),就说明代理通了——Google 会做跳转,重点是「有响应」而不是具体状态码。确认没问题,Ctrl+C 停掉前台进程。
挂成 systemd 服务(服务器必配)
nohup 挂后台是能跑,但服务器重启就没了、进程崩了没人管。正确姿势是 systemd 托管:
sudo tee /etc/systemd/system/mihomo.service > /dev/null <<EOF
[Unit]
Description=mihomo proxy service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
这个单元文件干了三件事:开机自启(WantedBy)、崩溃自动拉起(Restart=on-failure)、失败后等 5 秒再拉(RestartSec=5,防止疯狂重启)。
启用并启动:
sudo systemctl daemon-reload
sudo systemctl enable --now mihomo
enable --now 是「设置开机自启 + 立即启动」的合体命令。看一眼状态:
systemctl status mihomo
看到绿色的 active (running) 就齐活了。
常用管理命令速记:
sudo systemctl restart mihomo # 重启(更新订阅后执行)
sudo systemctl stop mihomo # 停止
journalctl -u mihomo -f # 实时看日志
六、让终端命令走代理:环境变量三件套
mihomo 跑起来只是「代理端口开了」,你的终端命令默认还是直连。让 curl、git、pip 这些走代理,靠的是环境变量。
当前终端临时生效(关掉终端就失效):
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
验证:
curl -I https://www.google.com # 不用 -x 参数,直接通
想永久生效,写进 ~/.bashrc(Debian/Ubuntu 系):
echo 'export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890' >> ~/.bashrc
source ~/.bashrc
用 zsh 的写进 ~/.zshrc,一样的。
git 和 docker 的特殊处理
两个高频坑,单独说:
git 大部分时候读环境变量就能走代理,但 git clone git@github.com:... 这种 SSH 协议的不走 http_proxy,要单独给 SSH 配 ProxyCommand。省事的办法是统一用 https 地址 clone。
docker 的 docker pull 是 daemon 进程去拉的,不读你终端的环境变量。要给 daemon 配代理:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf > /dev/null <<EOF
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
apt 同理不读环境变量,要写 /etc/apt/apt.conf.d/proxy.conf。这仨「服务进程不读环境变量」的坑是 Linux 翻墙最常见的翻车点,记住这个规律:用户终端的代理管不了系统服务。
七、进阶:TUN 模式(全局透明代理)
环境变量方式的局限:只对「听话」的命令生效,某些程序不读代理变量。想让整台机器所有流量自动走代理,用 TUN 模式。
编辑你第三节拉下来的配置文件(/etc/mihomo/config.yaml),在里面加一段:
tun:
enable: true
stack: system
auto-route: true
auto-detect-interface: true
然后重启服务:sudo systemctl restart mihomo。
TUN 模式需要 root 权限或给 mihomo 二进制加网络权限(sudo setcap cap_net_admin,cap_net_bind_service=+ep /usr/local/bin/mihomo),不然启动报 operation not permitted。开启后不再需要设任何环境变量,ping、docker、一切流量自动分流。
代价是多了一层虚拟网卡,排障时网络链路更复杂。个人建议:先用环境变量方式跑稳,确实有全局需求再上 TUN。
常见问题排查
Q:启动报 cannot execute binary file?
架构选错了。回第四节 uname -m 重新对照,arm 机器下了 amd64 包是最常见原因。
Q:bind: address already in use?
7890 端口被占。ss -lntp | grep 7890 看是谁占的,杀掉旧进程或改配置里的 mixed-port。
Q:节点连不上、订阅拉了没节点?
先 journalctl -u mihomo -f 看实时日志,proxy 相关报错基本是节点问题。机场节点大面积超时的,考虑换稳定些的机场——服务器场景对机场稳定性的要求比手机刷推高得多,一枝红杏 这类老牌机场在线率相对稳,24 小时挂着不容易断流。
Q:环境变量设了,新开终端又不走代理了?
环境变量只对当前会话生效。确认 export 写进了 ~/.bashrc 且执行过 source ~/.bashrc。
总结
Linux 科学上网的核心链路就四步:选机场拿订阅 → curl 拉成 config.yaml → mihomo 装好挂 systemd → 环境变量让命令走代理。跑通之后,服务器、WSL、开发板都是一个套路,唯一的变量就是架构选对。
桌面环境的 Linux 用户(Ubuntu 桌面、Deepin 这些)其实可以更省事,直接用 Clash Verge Rev 图形客户端,导入订阅点几下鼠标的事。手上有 VPS、想顺便自建节点的,看这篇:VPS 自建翻墙节点完全教程。