还在一台台登录VPS?教你用1Panel优雅地管理所有定时任务
大家好,我是nax。最近我一直在折腾我的几台Netcup小鸡,主要用来跑qBittorrent。因为Netcup有一个动态的流量限制(24小时内超过2T会限速),所以我萌生了一个想法:能不能让我的几台VPS上的qBittorrent实现自动化、智能化的启停,从而规避限速,最大化利用资源? 一开始我想在每台VPS上都装个1Panel面板来设置定时任务,但很快就发现这太繁琐了,管理起来也麻烦。于是,一个更棒的方案浮现在脑海:我能否用一台安装了1Panel的VPS作为“主控机”,去远程控制其他所有“被控机”的定时任务呢? 经过一番探索和实践,我成功了!现在,我将整个过程毫无保留地分享给大家,希望能帮到有同样需求的朋有
最终实现的效果
我的主控机(安装了1Panel)可以根据我设定的北京时间表,自动地、远程地启动或停止其他任何一台VPS上的服务(比如qBittorrent),实现了“三段式智能调度。其他需求也是一个原理”:
- 主力下载期: 北京时间
09:30-22:00,所有VPS火力全开,同时下载。 - 补充下载期: 北京时间
07:00-09:30及22:00-次日01:00,只保留一台VPS运行,处理少量任务。 - 深度休眠期: 北京时间
01:00-07:00,所有VPS集体休眠,节省资源。
教程开始:三步搞定集中管理
整个过程的核心原理是 SSH免密登录。只要主控机能无需密码就登录到被控机,它就能执行任何你授予它的命令。
第一步:配置SSH免密登录(打好地基)
这是最关键的一步,我们需要让主控机获得控制被控机的“钥匙”。
1. 在【主控机】上生成SSH密钥
首先,通过SSH登录到你那台安装了1Panel的主控机。执行以下命令来生成密钥对(公钥和私钥)。
ssh-keygen -t rsa之后系统会询问你保存路径、密码等,你完全不需要管,一路按回车即可。成功后,你的公钥文件会保存在 ==/root/.ssh/id_rsa.pub==
将【主控机】的公钥复制到【被控机】
这一步是把“钥匙”放到“锁”里。你有两种方法,取决于你的被控机安全设置。
方法A:被控机允许密码登录(推荐,最简单)
在主控机上,对你的每一台被控机执行以下命令:
# 请将 [user] 和 [ip] 替换为你的被控机的真实用户名和IP地址
ssh-copy-id [user]@[ip]
# 比如我的其中一台被控机是:
ssh-copy-id root@152.51.128.104执行后,系统会要求你输入一次被控机的登录密码。输入正确后,你会看到类似这样的成功提示:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@152.51.128.104'"
and check to make sure that only the key(s) you wanted were added.方法B:被控机禁止了密码登录
- 在主控机上,获取公钥内容并复制下来:
cat /root/.ssh/id_rsa.pub复制屏幕上显示的那一整串 ssh-rsa AAAA… 的字符。 2. 登录到你的被控机,用nano编辑器打开(或创建)authorized_keys文件:
nano /root/.ssh/authorized_keys- 将刚才复制的主控机公钥,完整地粘贴到这个文件的末尾,自成新的一行。
- 按 Ctrl+X -> 按 Y -> 按 回车,保存并退出。 重要提示:如果被控机上连 .ssh 目录都没有,需要手动创建并设置正确权限,否则不生效!
mkdir -p /root/.ssh
chmod 700 /root/.ssh
touch /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys测试免密登录
在主控机上,尝试SSH登录你的被控机:
ssh root@ip如果直接登录成功,没有提示你输入密码,那么恭喜你,最关键的一步已经完成!对你所有的被控机都重复以上操作。
第二步:在【被控机】上找到准确的服务名
登录到你的被控机,执行以下命令查找qBittorrent的服务名:
systemctl list-units --type=service | grep -i qbit下面是我的输出,可能不一样,但是操作一样
qbittorrent-nox@nax.service loaded active running qBittorrent我的服务名并不是简单的qbittorrent-nox,而是qbittorrent-nox@nax.service。这个@符号代表它是一个为特定用户(我的用户名是nax)运行的模板实例。我们必须使用这个完整的、准确的名字,后续操作才能成功。
第三步:在【主控机】1Panel中设置定时任务
万事俱备,现在回到我们熟悉的1Panel图形界面,开始设置最终的自动化流程。 导航到 主机 -> 计划任务,然后创建以下4个任务。注意你主控小鸡的系统时区,可以用date查看
任务一:【轻度唤醒】
任务名称: 1-轻度唤醒 (启动VPS A) 执行周期 (Crontab): 0 7 * * * (每日 7
执行) 脚本内容:ssh root@152.51.128.104 "systemctl start 'qbittorrent-nox@nax.service'"**其他的任务也差不多,可以自己写
