本文详细讲解 clash-cli 工具的安装、云服务器代理配置,以及本地机器如何一键复用云服务器的代理服务,全程附实操命令和避坑要点。
一、Clash-CLI 安装(云服务器端)
clash-cli 是 Clash 代理的命令行管理工具,支持快速安装、更新订阅、启停代理,推荐在 Linux 云服务器(如阿里云/腾讯云)部署。
方式一:Python 包安装(推荐,易维护)
1 2 3 4 5 6 7 8 9 10 11
| pip install clash-cli
clash-cli init
sudo clash-cli install
clash-cli on
|
方式二:Shell 脚本安装(传统方式,兼容低版本系统)
1 2 3
| git clone --branch main --depth 1 https://github.com/whillhill/clash-cli.git \ && cd clash-cli \ && sudo bash install.sh
|
二、Clash-CLI 基础使用(云服务器端)
1. 订阅管理(核心:更新代理节点)
1 2 3 4 5 6 7 8
| clash-cli update https://your-subscription-url.com
clash-cli update
clash-cli update log
|
2. 代理服务启停与状态查看
1 2 3 4 5 6 7 8
| clash-cli on
clash-cli off
clash-cli status
|
正常状态示例:
1 2 3
| ● mihomo.service - mihomo Daemon, A[nother] Clash Kernel. Loaded: loaded (/etc/systemd/system/mihomo.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2025-01-27 10:30:15 CST; 2h 15min ago
|
三、云服务器代理配置(允许本地访问)
默认情况下 Clash 仅监听本机(127.0.0.1),需修改配置开启局域网访问,并添加认证防止滥用。
1. 确认端口监听状态
1 2
| sudo netstat -tulpn | grep 7890
|
2. 修改 Clash 配置文件
步骤1:找到配置文件路径
通过 clash-cli status 输出找到配置文件(示例:/opt/clash/runtime.yaml)。
步骤2:编辑配置文件
1
| sudo vim /opt/clash/runtime.yaml
|
修改以下核心配置(添加局域网访问+用户认证):
1 2 3 4 5 6 7 8 9 10 11
| allow-lan: true
authentication: - "user:123123"
port: 7890 socks-port: 7891 redir-port: 7892
|
步骤3:重启服务使配置生效
1 2 3
| sudo systemctl restart mihomo
sudo netstat -tulpn | grep 7890
|
正常输出示例:
1 2
| tcp6 0 0 :::7890 :::* LISTEN 57850/mihomo udp6 0 0 :::7890 :::* 57850/mihomo
|
3. 开放云服务器端口(必做!)
登录云服务器控制台(如阿里云/腾讯云),在「安全组」中放行 7890 端口(TCP/UDP 协议),否则本地无法连接。
四、本地机器使用云服务器代理
1. 验证代理连通性
先通过 curl 测试是否能正常访问外网(替换为你的服务器IP/账号密码):
1 2
| curl -x http://user:123123@xxx.xxx.xxx.xx:7890 https://google.com -v
|
成功标志:返回 301 Moved 或 Google 页面内容,无连接超时/拒绝错误。
2. 一键代理脚本(本地快捷使用)
编写脚本 proxyctl,实现「一键开启/关闭/查看代理」,无需手动输配置。
步骤1:创建脚本文件
1
| vim /home/zzhxx/workspace/tools/proxyctl
|
粘贴以下内容(已适配你的配置,可直接用):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #!/bin/bash set -e
PROXY_USER="user" PROXY_PASS="123123" PROXY_IP="xxx.xxx.xxx.xx" PROXY_PORT="7890"
PROXY_URL="http://${PROXY_USER}:${PROXY_PASS}@${PROXY_IP}:${PROXY_PORT}"
case "$1" in on) unset HTTPS_PROXY HTTP_PROXY ALL_PROXY export HTTPS_PROXY="${PROXY_URL}" export HTTP_PROXY="${PROXY_URL}" export ALL_PROXY="${PROXY_URL}" echo -e "\033[32m✅ 代理已开启\033[0m" echo "当前代理配置:${PROXY_URL}" ;; off) unset HTTPS_PROXY HTTP_PROXY ALL_PROXY echo -e "\033[31m❌ 代理已关闭\033[0m" ;; status) echo -e "📌 当前代理状态:" echo "HTTPS_PROXY: ${HTTPS_PROXY:-未设置}" echo "HTTP_PROXY: ${HTTP_PROXY:-未设置}" echo "ALL_PROXY: ${ALL_PROXY:-未设置}" ;; test) echo -e "🔍 测试代理连通性..." if curl -s -x "${PROXY_URL}" https://google.com > /dev/null; then echo -e "\033[32m✅ 代理可用\033[0m" else echo -e "\033[31m❌ 代理不可用\033[0m" exit 1 fi ;; *) echo -e "📚 用法:" echo " proxyctl on - 开启代理" echo " proxyctl off - 关闭代理" echo " proxyctl status - 查看代理状态" echo " proxyctl test - 测试代理连通性" ;; esac
|
步骤2:添加执行权限
1
| chmod +x /home/zzhxx/workspace/tools/proxyctl
|
步骤3:设置别名(永久生效)
1 2 3 4 5 6
| alias proxyctl="sh /home/zzhxx/workspace/tools/proxyctl"
echo "alias proxyctl='/home/zzhxx/workspace/tools/proxyctl'" >> ~/.bashrc source ~/.bashrc
|
步骤4:使用示例
1 2 3 4 5 6 7 8 9 10 11
| proxyctl on
proxyctl status
proxyctl test
proxyctl off
|
3. 额外实用脚本(可选)
停止并删除 Docker 容器的快捷脚本(补充):
1 2 3 4 5 6 7 8 9 10 11 12
| #!/bin/bash
if [ -z "$1" ]; then echo -e "\033[31m❌ 请传入容器名/ID\033[0m" echo "用法:docker-rm 容器名/ID" exit 1 fi
name=$1 echo -e "🔧 停止并删除容器:${name}" docker stop ${name} && docker rm ${name} echo -e "\033[32m✅ 操作完成\033[0m"
|
五、避坑要点
- 权限问题:修改 Clash 配置文件需
sudo,否则保存失败;
- 安全风险:开启
allow-lan: true 后必须加 authentication,否则代理可能被全网滥用;
- 端口放行:云服务器安全组未开 7890 端口,本地会提示「连接拒绝」;
- 脚本生效:设置别名后需
source ~/.bashrc,否则新终端不生效;
- 代理范围:脚本仅对当前终端生效,如需全局代理需配置系统网络。
总结
- 核心流程:云服务器安装
clash-cli → 配置局域网访问+认证 → 开放端口 → 本地用脚本一键复用;
- 关键避坑:开启局域网访问必须加用户认证,云服务器安全组需放行 7890 端口;
- 效率优化:本地脚本实现「开启/关闭/测试」一体化,无需重复输入复杂代理地址。