首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >云服务器 SSH 登录加固清单:密钥登录、禁用密码与防锁死的操作顺序

云服务器 SSH 登录加固清单:密钥登录、禁用密码与防锁死的操作顺序

原创
作者头像
一只特立独行的兔先生
发布于 2026-10-30 06:11:06
发布于 2026-10-30 06:11:06
1320
举报

背景

公网云服务器的 22 端口会持续收到扫描和爆破尝试,查看 /var/log/auth.log(CentOS 系为 /var/log/secure)就能看到大量失败登录。仅靠强密码不够稳妥,常见做法是改用密钥登录并关闭密码认证。但操作顺序不对会把自己锁在服务器外,本文按“先验证、后关闭”的顺序整理。

一、生成并部署密钥

在本地生成密钥对,推荐 ed25519:

代码语言:bash
复制
ssh-keygen -t ed25519 -C "your_name@laptop"

把公钥部署到服务器:

代码语言:bash
复制
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@服务器IP

没有 ssh-copy-id 时,可以手工追加到服务器的 ~/.ssh/authorized_keys,并确认权限正确:

代码语言:bash
复制
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

权限过宽时,sshd 在默认的 StrictModes yes 下会拒绝使用该文件,这是“密钥配好了却登录不上”的常见原因。

二、先验证密钥可用,再改配置

保持当前会话不要关闭,另开一个终端测试:

代码语言:bash
复制
ssh -i ~/.ssh/id_ed25519 user@服务器IP

能无密码登录再继续。这一步是防锁死的关键。

三、修改 sshd 配置

编辑 /etc/ssh/sshd_config(部分发行版还会读取 /etc/ssh/sshd_config.d/*.conf,同一指令以先读到的为准,需要检查是否被覆盖):

代码语言:ini
复制
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password
MaxAuthTries 3

说明:

  • PasswordAuthentication no 关闭密码登录。
  • PermitRootLogin prohibit-password 允许 root 使用密钥但禁止密码;条件允许时可改为 no,用普通用户加 sudo。
  • MaxAuthTries 限制单次连接的认证尝试次数。

修改后先检查语法,再重载:

代码语言:bash
复制
sshd -t && systemctl reload sshd

在部分发行版里服务名是 ssh,请以实际为准。用 reload 而不是 restart,已有连接不会被断开。

然后再开一个新终端验证:密钥能登录;用 ssh -o PubkeyAuthentication=no user@IP 应被拒绝。确认无误后再关掉旧会话。

四、网络层限制

  • 在云服务器安全组中,把 22 端口的来源限制为办公网络或固定出口 IP,而不是 0.0.0.0/0。
  • IP 不固定时,可以使用跳板机,只对跳板机开放 22。
  • 修改 SSH 端口只能减少扫描噪音,不能替代认证加固。如果修改,务必先在安全组放通新端口并验证后,再关闭旧端口。

五、封禁反复失败的来源

可以使用 fail2ban 对多次失败的 IP 临时封禁。最小配置示例(/etc/fail2ban/jail.local):

代码语言:ini
复制
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1h

关闭密码认证后,爆破已无法成功,fail2ban 主要用来减少日志噪音和连接资源占用。要注意别把自己的出口 IP 封进去,可以用 ignoreip 加入白名单。

六、兜底方案

  • 保留云控制台提供的 VNC 或应急登录方式,万一 SSH 配置出错还能进入系统修复。
  • 修改配置前备份:cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak。
  • 私钥设置口令,并妥善保管;多人协作时每人独立密钥,离职后删除其公钥。

检查清单

  1. 新终端用密钥登录成功。
  2. sshd -t 无报错后再 reload。
  3. 密码登录已被拒绝。
  4. 安全组 22 端口来源已收紧。
  5. 留有控制台应急登录途径。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 背景
  • 一、生成并部署密钥
  • 二、先验证密钥可用,再改配置
  • 三、修改 sshd 配置
  • 四、网络层限制
  • 五、封禁反复失败的来源
  • 六、兜底方案
  • 检查清单
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档