感谢阅读本文 · 欢迎在下方留言交流你的想法
探索更多文章 →使用密钥对(Key Pair)代替传统密码登录,可以有效防御针对 SSH 端口(22)的暴力破解攻击。以下是标准的操作流程。
SSH 密钥登录采用非对称加密技术。你将 公钥 (Public Key) 存放在服务器上,将 私钥 (Private Key) 保存在本地电脑。登录时,服务器通过公钥出题,你用私钥解题,从而完成身份验证。
如果你的电脑还没有密钥,请打开终端执行:
bashssh-keygen -t ed25519 -C "[email protected]"
提示:按三次回车即可(默认路径,不设私钥密码)。推荐使用 ed25519 算法,它比 RSA 更快且更安全。
使用自动化工具将公钥拷贝到服务器的 ~/.ssh/authorized_keys 文件中:
bashssh-copy-id 用户名@服务器IP
注意:请确保你现在已经能通过密钥成功登录,再执行此步!
编辑配置文件:
bashsudo nano /etc/ssh/sshd_config
在文件中修改或确认以下各项:
| 配置项 | 设定值 | 说明 |
|---|---|---|
| PubkeyAuthentication | yes | 允许公钥认证 |
| PasswordAuthentication | no | 禁用密码登录 |
| ChallengeResponseAuthentication | no | 禁用挑战应答认证 |
| PermitRootLogin | prohibit-password | 允许 root 登录但仅限密钥 |
bash
如果配置后无法登录,通常是服务器文件权限过大导致的(SSH 要求敏感目录必须保持私有):
700 (drwx------)600 (-rw-------)修复命令:
bash
Port 22 改为其他不常用端口(如 22022),可以规避 90% 的自动扫描脚本。ssh-add 将其加入缓存,避免重复输入。运维进阶:处理“身份验证变更”报警 当你重装了系统,或者服务器更换了 IP,再次连接时,SSH 会弹出一大串红色的警告:IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!。
这是因为你的本地电脑 known_hosts 文件记录的是旧的服务器“指纹”,由于系统重装,指纹对不上了。
快速修复命令 无需手动去编辑那个乱码一样的 known_hosts 文件,直接执行:
Bash ssh-keygen -R 188.68.60.165 命令解析:
-R (Remove):从本地缓存中删除指定 IP 或域名的公钥记录。
执行后,下次登录时 SSH 会再次询问你是否信任该主机,输入 yes 即可重新建立信任。
![]()
# 检查语法是否正确
sudo sshd -t
# 重启服务
sudo systemctl restart ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys