−25%

Windows 按年付费,截至 10 月 31 日。 查看套餐

EQVPS
开始使用

如何配置 Rocky Linux VPS:拿到 root 后的第一步

新 Rocky Linux 9 VPS 的前十分钟:用 dnf 更新、创建带 SSH 密钥的 sudo 用户、关闭 root 登录和密码登录、启用 firewalld 以及自动安全更新。每条命令都在我们的镜像上实际运行过。

Rocky Linux 9 是兼容 RHEL 的免费选择:同样的软件包、同样的 dnf、同样的 firewalld 和 SELinux。如果你配置过 Debian 或 Ubuntu,步骤顺序是一样的,只是工具不同。下面是一台全新 Rocky 9 服务器上的前十分钟。

以下每条命令都在发布前于我们的 Rocky Linux 9 镜像上运行过。在一台干净的服务器上,整个流程只需几分钟。

1. 更新系统

用控制面板中的密码以 root 登录,然后更新:

dnf -y upgrade

在我们的镜像上,测试时只用了几秒,因为镜像本身已是最新。

2. 创建 sudo 用户并添加 SSH 密钥

在 Rocky 上,管理员组叫 wheel,不是 sudo:

useradd -m -G wheel deploy
passwd deploy                      # sudo will ask for this password

把你的公钥放到服务器上(如何创建密钥)。如果你已把它复制到 /root/key.pub:

install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
install -m 600 -o deploy -g deploy /root/key.pub /home/deploy/.ssh/authorized_keys
restorecon -R /home/deploy/.ssh

restorecon 会设置 sshd 期望的 SELinux 标签。标签不对时,密钥登录会失败,而且没有明显的错误提示。

打开第二个终端,确认 ssh deploy@YOUR.SERVER.IP 能登录、sudo -v 接受密码。在此之前保持 root 会话不要关闭。

3. 关闭 root 登录和密码登录

这里 Rocky 与教科书式修改 sshd_config 不同。设置保存在 /etc/ssh/sshd_config.d/ 下的独立文件中,sshd 采用它找到的第一个值。在我们的镜像中,第一个文件是 00-eqvps.conf,它允许 root 和密码登录,方便你第一天能进入服务器。请在那里修改:

sed -i -e 's/^PermitRootLogin .*/PermitRootLogin no/' \
       -e 's/^PasswordAuthentication .*/PasswordAuthentication no/' \
       /etc/ssh/sshd_config.d/00-eqvps.conf
sshd -t && systemctl reload sshd
sshd -T | grep -E '^(permitrootlogin|passwordauthentication) '

最后一条命令会显示 sshd 实际执行的设置。你应该看到:

permitrootlogin no
passwordauthentication no

此后 ssh root@… 即使用密钥也会被拒绝,deploy 只能用密钥登录。

4. 防火墙:firewalld

云镜像没有自带 firewalld。安装、启动,并只开放需要的服务:

dnf -y install firewalld
systemctl enable --now firewalld
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --remove-service=cockpit
firewall-cmd --reload
firewall-cmd --list-services

默认区域开放了 cockpit(9090 端口)和 dhcpv6-client。Cockpit 并未安装,但没有理由让它的端口开着。添加应用时用同样的方法开放端口,例如 firewall-cmd --permanent --add-service=https。

5. 自动安全更新

dnf-automatic 按定时器下载更新,但默认不安装,所以要把安装打开:

dnf -y install dnf-automatic
sed -i 's/^apply_updates = .*/apply_updates = yes/' /etc/dnf/automatic.conf
systemctl enable --now dnf-automatic.timer
systemctl list-timers dnf-automatic.timer

如果只想要安全补丁,在同一个文件里再设置 upgrade_type = security。

6. 保持 SELinux 开启

全新服务器上 getenforce 会输出 Enforcing,以上所有步骤都能在这种状态下工作。当应用需要非标准端口或目录时,解决办法是设置标签(semanage port、restorecon),而不是 setenforce 0。

选哪个套餐

Rocky 9 空闲时约用 400 MB 内存。Nano 套餐(1 GB,$3/月)足够运行一个小服务;Micro(2 GB,$5/月)还能放下一个数据库。在 NAT 套餐上,SSH 通过控制面板里显示的专属端口进入。如果需要对所有人开放 80/443 端口,请选择带独立 IPv4 的套餐,例如 Micro-IP,$10/月。

Rocky Linux 9 是 RHEL 系 OS 页面上的镜像之一,所有 VPS 套餐都可选。支付方式为 Base、Ethereum 或 Polygon 网络上的 USDT、USDC 或 ETH,无需证件,也无需银行卡。如果你更喜欢用脚本管理服务器,API 文档介绍了下单、重装和续费。

常见问题

Rocky Linux 和 RHEL 是一样的吗?

它由相同的源代码构建,目标是与 Red Hat Enterprise Linux 9 完全兼容,所以 RHEL 的教程、软件包和习惯做法(dnf、firewalld、SELinux)在这里都适用。不需要 Red Hat 订阅。

为什么我在 Rocky 上改了 SSH 设置却不生效?

Rocky 按文件名顺序读取 /etc/ssh/sshd_config.d/ 中的文件,每个设置以最先找到的值为准。在我们的镜像中,第一个文件是 00-eqvps.conf,所以请在那里修改,并在关闭会话前用 sshd -T 确认结果。

要关闭 SELinux 吗?

不要。全新安装时它处于 Enforcing 模式,本文的所有步骤都能在它开启时正常工作。如果你在不常见的位置为 SSH 或 Web 服务器创建了文件,对该路径执行 restorecon -R 即可修正标签。为了标签问题关掉 SELinux,等于丢掉一层真正的防护。

可以修改 SSH 端口吗?

在带独立 IPv4 的套餐上可以,但要同时在 firewalld 和 SELinux 中放行新端口。在 NAT 套餐上请让 sshd 保持在 22 端口:你的专属外部端口已经转发到服务器内部的 22 端口,移动 sshd 会破坏这条转发。

Rocky Linux 用哪个套餐就够了?

Rocky 9 空闲时约占用 400 MB 内存,所以小型服务用 1 GB 的 Nano 就够。如果要跑数据库或容器,2 GB 的 Micro 更宽裕。

评论

暂无评论。来做第一个吧。

发表评论

评论在显示前会经过审核。