QQ机器人部署案例记录
本案例记录了部署QQ机器人的过程,可以将你闲置的QQ账号调教成一个机器人供群友使用。
本案例使用了:
- 云服务器:本案例中云服务器配置为2核2G,系统为Debian 12;
- 本地计算机:本案例中本地计算机的系统为Windows 11。
服务器系统基础配置
安装OpenSSH组件
本案例所使用的本地计算机系统为Windows 11,下面所需要的部分指令需要用到OpenSSH相关组件。Windows 10和11一般是默认安装了OpenSSH客户端,如果需要检查可以打开“设置” → “系统” → “可选功能”,确保已安装OpenSSH客户端。
创建新用户并使用密钥登录
本案例采用的是Debian 12。首先,在云服务器中使用以下命令更新软件源。
1 | sudo apt update && sudo apt upgrade |
接着,使用以下命令创建一个新的普通用户。注意,尽量避免使用root用户操作,这非常不安全。本案例后续的操作都将基于新普通用户进行。
1 | adduser newuser #新建用户newuser |
系统会提示你为该用户设置密码并填写一些可选信息(可以直接按回车跳过)。这个密码用于 sudo 提权和备用登录方式,请务必设置一个强密码并记住它。
如果你希望这个普通用户能够执行管理员命令,需要将其添加到 sudo 组。由于本案例后续需要用到sudo命令,建议加入sudo组。
1 | usermod -aG sudo newuser |
设置 SSH 目录
切换用户为新用户。
1 | su - newuser |
创建.ssh目录并设置700权限。700权限意味着只有文件所有者具有读写执行权限。
1 | mkdir -p ~/.ssh |
创建 authorized_keys 文件并设置600权限。600权限意味着只有文件所有者具有读写权限。这将是公钥的存储位置。
1 | touch ~/.ssh/authorized_keys |
生成 SSH 密钥对
SSH密钥对是在本地计算机生成的。这里采用Ed25519算法生成SSH密钥。
1 | ssh-keygen -t ed25519 |
系统会提示:
Enter file in which to save the key:密钥保存的位置。建议采用默认位置;
Enter passphrase (empty for no passphrase):为私钥设置一个密码,即使私钥被盗也无法直接使用;
Enter same passphrase again:确认密码。
完成后,将在SSH密钥目录下创建两个文件:
id_ed25519:私钥,保存在本地,不可泄漏。id_ed25519.pub:公钥,上传到服务器。
将公钥上传到服务器
有多种方法可以将公钥上传至服务器。最好的方法是采用ssh-copy-id方法上传。在本地运行:
1 | ssh-copy-id -i ~/.ssh/id_ed25519.pub newuser@your_server_ip |
就可以上传成功了。
但是,由于本案例所使用的PowerShell不支持ssh-copy-id,这里采用手动复制的方法上传。
在本地计算机上,查看公钥内容:
1 | cat ~/.ssh/id_ed25519.pub |
在服务器root会话中,使用echo命令导入公钥:
1 | echo "粘贴你复制的公钥内容" >> /home/newuser/.ssh/authorized_keys |
使用以下命令测试登录:
1 | ssh newuser@your_server_ip |
如果没有设置密钥密码,直接登录说明配置成功。如果设置了密钥密码,在确认密码后成功登录,同样配置成功。
禁用密码登录与root直接登录
在服务器上,以 root 身份编辑 SSH 服务器配置文件:
1 | nano /etc/ssh/sshd_config |
找到并修改以下行,确保它们如下所示:
1 | 禁止 root 用户直接 SSH 登录 |
现在,再登录root就会提示Permission denied (publickey).。同时也不能使用密码直接登录,保障服务器的安全。
1Panel面板管理软件
为了实现便捷且可视化的服务器管办理,本案例安装了Linux运维管理面板。可以采用1Panel、宝塔等面板。本案例采用了1Panel。
1Panel的安装与配置
由于1Panel的安装需要sudo权限,因此我们使用以下命令进行安装:
1 | sudo bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)" |
选择默认的路径,并安装好Docker之后便进入1Panel的配置。依次配置端口、安全入口、用户名和密码,1Panel就会自动启动。当然,这些内容后续还可以在1Panel中修改。
如果使用的是云服务器,在安全组中打开端口后,便可以在浏览器中访问服务器后台。
打开防火墙
Debian 12可能没有默认UFW防火墙,因此为了保障服务器安全,有必要安装并打开防火墙。
使用以下命令安装UFW。
1 | sudo apt install ufw |
设置默认策略。
1 | sudo ufw default deny incoming # 默认拒绝所有传入连接 |
允许必要的服务。本案例中只有ssh和1Panel的服务是必须的。如果服务器还有web服务,那么也应该相应允许http和https服务。
1 | sudo ufw allow ssh # 允许 SSH 连接 |
开启两步验证(可选)
如果你有2FA验证软件(如Google Authenticator、Microsoft Authenticator、1Password,iOS的“密码”等),可以设置1Panel的两步验证。在“面板设置” → “安全”中开启“两步验证”,扫描二维码后输入验证码便可开启。这样在登录后需要二次验证,防止暴力破解,进一步确保1Panel端口的安全。
安装Fail2ban(可选)
安装Faile2ban可以有效保护服务器以免遭受暴力攻击。
安装Fail2ban。
1 | sudo apt-get install fail2ban |
Debian 12 及以上的版本需要手动安装 rsyslog。
1 | sudo apt-get install rsyslog |
启动 Fail2ban 服务并设置开机自启动。
1 | sudo systemctl start fail2ban |
安装完成后,也可以在1Panel面板的“工具箱” → “Fail2ban”中开启和设置Fail2ban。
QQ机器人部署与运行
安装NapCat
由于近期出现了大规模针对基于NapCat的QQ机器人的攻击,这里不建议使用NapCat进行QQ机器人部署。如果一定要使用NapCat,请不要使用NapCat WebUI,在公网暴露NapCat的端口。如果一定要使用WebUI,也请一定要设置强token以防止攻击。建议关闭WebUI并配置好防火墙、监听本地回环127.0.0.1。
根据NapCat官方文档,可以采用以下命令一键安装NapCat:
1 | curl -o \ |
本案例采用NapCat TUI-CLI工具。
安装完成后首次登陆需要输入QQ号并扫码登陆。后续需要配置NapCat可以使用以下命令启动:
1 | sudo napcat |
安装Koishi
首先需要在1Panel的“应用商店”中,搜索“MySQL”,按照默认配置进行安装并启用。
同样搜索“Koishi”,选择“端口外部访问”,安装并启用。
这样在本机公网IP的5140端口(默认端口)就可以配置Koishi了。