服务器被暴力破解,如何开启二次验证?
为什么需要二次验证?
服务器被暴力破解是日常运维最常见的攻击之一。
黑客通过脚本不断尝试 root 或常见用户名+弱密码,一旦成功就能直接控制服务器。
开启二次验证(2FA)相当于在密码之外再加一把锁 —— 即使密码泄露,没有手机上的动态验证码仍然无法登录。
这种方式能阻断 99% 的自动化暴力破解。
下面以 Linux 服务器为例,使用 Google Authenticator(基于时间的一次性密码 TOTP)保护 SSH 登录。
如果你用的是宝塔面板,文末也会单独说明面板两步验证的开启路径。
前置准备
- 一台 Linux 服务器(CentOS 7/8、Ubuntu 20.04 及以上均可)
- 手机安装 Google Authenticator 或 Authy(支持 TOTP 的任意 APP)
- 具备 root 权限,或能通过 sudo 执行命令
- 已经关闭防火墙对 SSH 端口的异常阻挡,确保后续测试顺利
安装与配置 Google Authenticator
1. 安装谷歌认证模块
CentOS / RHEL 系列:
yum install -y epel-release
yum install -y google-authenticator
Ubuntu / Debian 系列:
apt update
apt install -y libpam-google-authenticator
2. 为当前用户生成密钥
运行以下命令,按提示操作:
google-authenticator
过程中会询问多个选项,建议全部选择 y(yes)。
- 第一个问题:是否要使用基于时间的令牌?选 y
- 第二个问题:是否更新配置文件?选 y
- 第三个问题:是否禁止同一令牌重复使用?选 y,提升安全
- 第四个问题:是否允许时间偏移?默认 4 分钟,推荐 y
执行后终端会显示一个 二维码(需要用手机 APP 扫描)和几个紧急恢复码。请立即截图或抄录恢复码,否则万一手机丢失将无法登录。
3. 修改 PAM 配置,启用二次验证
编辑 SSH 的 PAM 配置文件:
vim /etc/pam.d/sshd
在文件开头或 auth 部分添加一行:
auth required pam_google_authenticator.so
保存退出。
4. 修改 SSH 配置,开启交互式键盘验证
编辑 /etc/ssh/sshd_config:
vim /etc/ssh/sshd_config
找到以下参数并修改:
ChallengeResponseAuthentication yes(如果被注释,取消注释并改为 yes)UsePAM yes(确保是 yes)- 如果原来使用密码登录,保留
PasswordAuthentication yes
保存后重启 SSH 服务:
systemctl restart sshd
手机绑定与验证
- 打开手机上的 Google Authenticator APP,点击“添加” -> “扫描条形码”,扫描终端生成的二维码。
- APP 会显示一个每 30 秒刷新一次的 6 位数字。
- 保持当前 SSH 会话不要退出,另开一个终端尝试登录:
ssh youruser@your-server-ip
输入密码后,会提示 Verification code:,输入手机上显示的动态码即可登录成功。
注意:首次配置后,原来的密码登录仍然有效(加上动态码)。
如果希望只允许二次验证登录,可以稍后修改 /etc/ssh/sshd_config 中 PasswordAuthentication 为 no,但建议先用上面方式稳定运行几天。
避坑与高频问题
Q1:登录时没有出现 Verification code 提示?
- 检查
/etc/ssh/sshd_config中ChallengeResponseAuthentication是否为 yes。 - 重启 SSH 后注意不要退出当前会话,用新窗口测试。
- 如果使用 Alibaba Cloud 等云服务器,安全组规则中确保 SSH 端口放行。
Q2:手机丢了或 APP 被卸载怎么办?
- 使用之前抄录的紧急恢复码,每个码只能使用一次,用完作废。
- 若恢复码也没保存,可以连接云服务器控制台的 VNC 远程终端(不需要 SSH 登录),通过命令行重新运行
google-authenticator生成新密钥。
Q3:时间不同步导致验证码失效?
- 在手机上打开 Google Authenticator 的设置,点击“时间校正”进行同步。
- 服务器端也可安装
ntpdate同步时间:ntpdate ntp.aliyun.com。
宝塔面板用户的二种选择
如果你正在用宝塔面板管理服务器,面板自带两步验证功能。
登录宝塔后台,进入 面板设置 -> 安全设置 -> 两步验证,点击“开启”并按提示扫描二维码即可。
这样面板登录也被二次验证保护,防止通过面板漏洞暴力破解。
总结:开启 SSH 二次验证是防御暴力破解性价比最高的操作之一。
花 10 分钟配置,就能让脚本攻击彻底失效。
如果你正在处理“服务器被暴力破解,如何开启二次验证”的问题,建议先按上述步骤完成 SSH 保护,再在宝塔面板中补充面板二次验证,形成双重保险。