GHOSTVPS / 安全

保护 Ubuntu VPS 的 SSH 访问

在关闭密码和 root 登录前,先验证独立管理账户和 SSH 密钥。

更新日期 · GhostVPS

开始之前

需要 Ubuntu 24.04、OpenSSH、sudo、Linux/macOS/WSL 终端以及已确认的恢复入口。本示例仅用于密钥登录,不应直接套用于 MFA、集中认证或 Match 策略。保持当前会话,按需替换示例 IP 和端口。

准备管理账户

使用已测试的 sudo 账户,或通过下方命令创建 deploy。若用户名已存在,先检查,不要重复创建。按提示设置强密码。在发送凭据前通过可信渠道核对服务器指纹。

您的 VPS · Linux 终端

sudo adduser deploy
sudo usermod -aG sudo deploy
准备管理账户. Ubuntu 24.04 独立容器实验记录。localhost 是实验服务器;实际操作请使用您服务的地址。 临时实验账户创建时禁用了密码登录;测试前已私下设置强密码。您的 VPS 请按正文中的交互式 adduser 流程操作。
准备管理账户. Ubuntu 24.04 独立容器实验记录。localhost 是实验服务器;实际操作请使用您服务的地址。 临时实验账户创建时禁用了密码登录;测试前已私下设置强密码。您的 VPS 请按正文中的交互式 adduser 流程操作。

在本地创建专用密钥

如果 ghostvps_admin 文件已存在,请换用新文件名,不要覆盖可用密钥。设置密钥口令。只向服务器复制 .pub 公钥,私钥保留在本机,不能发到工单或聊天中。

您的电脑 · 终端

ssh-keygen -t ed25519 -f ~/.ssh/ghostvps_admin
ssh-copy-id -i ~/.ssh/ghostvps_admin.pub deploy@203.0.113.10
在本地创建专用密钥. Ubuntu 24.04 独立容器实验记录。localhost 是实验服务器;实际操作请使用您服务的地址。
在本地创建专用密钥. Ubuntu 24.04 独立容器实验记录。localhost 是实验服务器;实际操作请使用您服务的地址。

确认密钥登录与 sudo 可用

通过明确限定公钥认证的命令打开另一个会话。询问密钥口令正常;该命令不允许回退到账户密码。在新会话运行 sudo -v,任一检查失败就停止。

您的电脑 · 终端

ssh -i ~/.ssh/ghostvps_admin -o PreferredAuthentications=publickey -o PasswordAuthentication=no deploy@203.0.113.10

您的 VPS · Linux 终端

sudo -v
确认密钥登录与 sudo 可用. Ubuntu 24.04 独立容器实验记录。localhost 是实验服务器;实际操作请使用您服务的地址。
确认密钥登录与 sudo 可用. Ubuntu 24.04 独立容器实验记录。localhost 是实验服务器;实际操作请使用您服务的地址。

创建独立配置片段

仅在测试成功后创建指定配置文件,且须先确认文件不存在,再填入四行配置。OpenSSH 多数设置采用首先读取的值,Ubuntu 提前加载片段。已有较早配置或 Match 规则可能改变结果,因此不能只看文件内容。

您的 VPS · Linux 终端

sudoedit /etc/ssh/sshd_config.d/00-ghostvps-hardening.conf

文件内容

PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
创建独立配置片段. Ubuntu 24.04 独立容器实验记录。localhost 是实验服务器;实际操作请使用您服务的地址。
创建独立配置片段. Ubuntu 24.04 独立容器实验记录。localhost 是实验服务器;实际操作请使用您服务的地址。

检查语法与生效配置

检查语法和生效值:pubkeyauthentication 应为 yes,另外三项应为 no。若语法错误或结果不符,不要重新加载。使用 Match 时还应通过 sshd -T -C 检查实际用户和地址上下文。

您的 VPS · Linux 终端

sudo /usr/sbin/sshd -t
sudo /usr/sbin/sshd -T | grep -E '^(pubkeyauthentication|passwordauthentication|kbdinteractiveauthentication|permitrootlogin) '
检查语法与生效配置. Ubuntu 24.04 独立容器实验记录。localhost 是实验服务器;实际操作请使用您服务的地址。
检查语法与生效配置. Ubuntu 24.04 独立容器实验记录。localhost 是实验服务器;实际操作请使用您服务的地址。

重新加载并再次测试

确认后重新加载 ssh,重新建立密钥会话并再次验证 sudo,再关闭原会话。若访问失败,使用保留的会话或恢复入口还原先前设置,执行 sshd -t 后重新加载。本教程不会修改防火墙。

您的 VPS · Linux 终端

sudo systemctl reload ssh

您的电脑 · 终端

ssh -i ~/.ssh/ghostvps_admin deploy@203.0.113.10
重新加载并再次测试. 容器没有 systemd:通过 SIGHUP 重载独立 SSH 服务后,重新验证了密钥登录。实际 systemd VPS 请使用正文中的 systemctl 命令。
重新加载并再次测试. 容器没有 systemd:通过 SIGHUP 重载独立 SSH 服务后,重新验证了密钥登录。实际 systemd VPS 请使用正文中的 systemctl 命令。

官方参考资料