SSH 加固与基于密钥的身份验证
禁用密码身份验证,配置密钥对,使用 AllowUsers 限制访问,并使用 fail2ban
SSH 加固与基于密钥的身份验证 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。
SSH 安全为何重要
SSH 是 Linux 服务器的主要远程管理协议。配置错误的 SSH 服务器是攻击者最常利用的入口之一——它暴露在互联网中,并持续受到暴力破解机器人攻击。
生成 SSH key 对
基于 key 的身份验证比密码更安全。请生成一对 key:
ssh-keygen -t ed25519 -C "your_email"
# Creates ~/.ssh/id_ed25519 (private) and id_ed25519.pub (public)
# Never share the private key安装公 key
将您的公 key 复制到服务器:
ssh-copy-id user@server
# Or manually:
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys禁用密码身份验证
基于 key 的身份验证正常工作后,请禁用密码登录,以消除暴力破解风险:
# In /etc/ssh/sshd_config:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
sudo systemctl restart sshd更改默认 SSH 端口
将 SSH 从端口 22 移到其他端口,可以减少自动扫描噪声。这属于通过隐蔽实现安全——并不是真正的防御措施,但可以减少日志 spam。请始终同步更新防火墙规则。
# /etc/ssh/sshd_config
Port 2222
# Then update firewall:
ufw allow 2222/tcp
ufw delete allow 22/tcp按用户/IP 限制 SSH 访问
限制哪些用户可以通过 SSH 登录,以及允许从哪些位置登录:
# /etc/ssh/sshd_config
AllowUsers alice bob
AllowGroups sshusers
# Or restrict by source IP in /etc/hosts.allow:
sshd: 192.168.1.0/24SSH 超时和登录限制
通过限制会话和尝试次数来减少暴露面:
# /etc/ssh/sshd_config
ClientAliveInterval 300 # disconnect idle sessions after 5 min
ClientAliveCountMax 2
MaxAuthTries 3 # max password attempts
LoginGraceTime 30 # seconds to authenticate使用 fail2ban
fail2ban 会监控日志文件,并封禁表现出恶意模式的 IP(例如 SSH 登录失败次数过多)。它会动态更新防火墙规则,以阻止攻击者。
apt install fail2ban
# /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 3
bantime = 3600SSH 代理和 key 转发
SSH 代理会将已解密的私 key 存储在内存中,因此您无需在每次登录时重新输入密码短语。代理转发(ssh -A)会让您的 key 经由多个跳转节点传递——请谨慎使用,因为遭到入侵的中间服务器可能从代理套接字中窃取您的 key。
SSH 的双因素身份验证
通过 Google Authenticator PAM 模块为 SSH 添加 TOTP,即使使用基于 key 的身份验证,也能获得额外保护。登录时必须同时提供 key AND 基于时间的一次性密码。
审计 SSH 配置
使用以下命令验证您的 SSH 配置:
sshd -T | grep -E "passwordauth|permitroot|pubkeyauth|port"
# Check who is connected:
ss -tnp | grep :22
who快速检查:SSH 加固
应将哪个 sshd_config 设置为 no,以消除针对 SSH 的暴力破解密码攻击?
课程回顾
SSH 加固措施包括:使用 Ed25519 key、禁用密码身份验证、禁用超级用户登录、将端口从 22 更改为其他端口、限制 AllowUsers、设置空闲超时,以及安装 fail2ban。切勿共享私 key。使用 sshd -T 进行审计。代理转发很方便,但在不受信任的主机上使用时存在风险。
常见问题解答
「SSH 加固与基于密钥的身份验证」课时是免费的吗?
是的 — 「SSH 加固与基于密钥的身份验证」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。
「SSH 加固与基于密钥的身份验证」这节课中我会学到什么?
禁用密码身份验证,配置密钥对,使用 AllowUsers 限制访问,并使用 fail2ban 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cyber Security Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「SSH 加固与基于密钥的身份验证」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cyber Security Academy 课中编写并运行代码吗?
能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 文件权限与所有权
- 用户与组管理
- SSH 加固与基于密钥的身份验证
- iptables 与 UFW 防火墙规则