Linux 服务器初始化
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3cead635/linux-server-init。
技能介绍
远程初始化 Linux 服务器的常见问题
当你拿到一台新交付的云主机或裸机时,第一步往往是把 SSH 从默认状态拉到可长期管理的状态:改登录端口、限制 root 登录、装好密钥认证和 fail2ban。但这些操作一旦顺序不对,很容易把自己锁在门外——改端口前没先开防火墙,重启 SSH 前没验证配置,或者在不支持的发行版上强行跑脚本。更麻烦的是,服务器发行版五花八门,只用发行版名判断包管理器和 init 系统并不可靠。
技能如何工作
这个技能把初始化当成一次锁死风险极高的运行。它不会盲目信任发行版名称,而是先探测包管理器(apt、dnf/yum、zypper、pacman、apk、tdnf)和 init 系统(systemd 或 OpenRC)。发现两者都不支持时,会直接停止。
运行流程如下:
- 收集并确认当前 SSH 连接信息:主机、端口、登录用户、私钥路径,以及是否批准远程变更。
- 解析默认值或用户输入的参数,比如
TARGET_USER、SSH_PORT、TIMEZONE。 - 先解决客户端密钥:如果有公钥就用提供的;否则本地生成 Ed25519 密钥对,只安装
.pub,私钥返回给用户自行保管,绝不上传、打印或打包。 - 检查远程系统的 OS 兼容性、现有 SSH 策略、防火墙状态,以及目标账户是否存在。
- 用 root 或 sudo 执行脚本
scripts/bootstrap_linux_ssh.sh,脚本自动匹配包管理器家族。 - 保持原会话开启,用新密钥在目标端口测试二次登录,确认云防火墙或安全组已放行该端口。
- 验证密钥登录、禁止 root 登录、SSH 配置生效、防火墙规则和 fail2ban。
适用边界与注意点
安全规则要求:绝不能禁用 root 登录,除非目标账户和 authorized_keys 已安装好;绝不能重启 SSH,除非 sshd -t 检查通过。防火墙方面,主机防火墙和云安全组是两套独立控制,必须同时确认外部 TCP 连通与 SSH 认证都通过,才算完成。
如果 UFW 或 firewalld 未启用,默认不会开启,除非用户接受可能阻断未知服务;脚本支持 ENABLE_FIREWALL=1 显式启用。无密码 sudo 同样需要明确授权,脚本提供 ENABLE_NOPASSWD_SUDO=1 开关。当包升级包含内核更新时,只会提醒可能需要重启,不会自行操作。若新 SSH 端口能连通 TCP 但认证前断开,需要从仍开启的原会话或云控制台检查云防火墙、fail2ban、MaxStartups 和 journalctl -u ssh 日志。
详细加固检查、可选安全初始化和回滚说明见 references/hardening.md,双语操作指南见 references/usage-guide.md。
使用场景
- 刚买到一台新的云主机,需要修改默认 SSH 端口、禁用密码登录并配置密钥认证,同时确保不会把自己锁在门外。
- 团队扩充了一批基于不同发行版的服务器,需要批量部署标准化的防火墙规则和 fail2ban 防暴力破解策略。
- 运维人员需要远程初始化一台新的 Linux 服务器,在安装 fail2ban 和配置密钥登录前,必须验证系统兼容性和现有 SSH 状态。
适合人员
- 负责公司基础设施的运维工程师,需要快速安全地初始化大批新交付的 Linux 服务器并统一 SSH 安全策略。
- 独立开发者或技术负责人,偶尔需要自己手动配置新购买的 VPS,希望有一套防锁死的安全引导流程。
- 云原生应用架构师,需要在多种发行版(如 Debian、RHEL、Alpine)混合环境中部署一致的基础安全环境。