SSH 密钥登录实战:给服务器换一把更稳妥的锁

举报
yd_298983889 发表于 2026/10/31 08:37:13 2026/10/31
【摘要】 刚开始管服务器的时候,我习惯用密码登录,觉得方便。直到有一天看 auth.log,发现一夜之间多了上万条失败登录记录,才意识到公网上的服务器每时每刻都在被人拿着密码字典撞。换成密钥登录之后,世界清净了很多。这篇记录一下我自己的完整做法和踩过的坑。第一步,在本地生成密钥对。现在推荐 Ed25519 算法:ssh-keygen -t ed25519。一路回车会在 ~/.ssh 下生成 id_ed...

刚开始管服务器的时候,我习惯用密码登录,觉得方便。直到有一天看 auth.log,发现一夜之间多了上万条失败登录记录,才意识到公网上的服务器每时每刻都在被人拿着密码字典撞。换成密钥登录之后,世界清净了很多。这篇记录一下我自己的完整做法和踩过的坑。

第一步,在本地生成密钥对。现在推荐 Ed25519 算法:ssh-keygen -t ed25519。一路回车会在 ~/.ssh 下生成 id_ed25519(私钥)和 id_ed25519.pub(公钥)。私钥相当于家门钥匙,只留在本地,千万不要上传到任何服务器或网盘;公钥是可以公开的锁芯,装到服务器上。

第二步,把公钥装到服务器上。最省事的是 ssh-copy-id user@服务器IP,它会自动把公钥追加到服务器的 ~/.ssh/authorized_keys 并修正权限。如果 ssh-copy-id 不可用,也可以手动复制 .pub 文件里那一整行内容,粘贴到服务器的 authorized_keys 里。这里有个高频坑:权限必须对——~/.ssh 目录 700、authorized_keys 文件 600,所有者必须是登录用户本人。权限过宽时 sshd 会直接拒绝密钥登录,而且日志里还不一定写得很明白,排查时要先想起这一条。

第三步,先开一个新窗口测试密钥能否登录,确认没问题之后,再考虑关掉密码登录。修改 /etc/ssh/sshd_config:PasswordAuthentication no、PermitRootLogin prohibit-password,改完先执行 sshd -t 检查语法,再 reload 服务。特别强调一句:改配置时原来的会话不要关,万一配置写错,还能从旧会话里改回来。我见过有人改完立刻断开,结果把自己锁在门外,最后只能去云厂商控制台走 VNC 救援。

第四步,再加两道保险。一是 fail2ban,监控失败登录并自动封禁恶意 IP;二是云服务器的安全组只放行需要的端口,没用的端口不要对全网开放。至于改默认端口,只能减少日志噪音,不算真正的安全措施,心里要有数。

最后是日常习惯:每台重要服务器用独立密钥,给私钥设口令并用 ssh-agent 管理,设备丢失或人员变动时,第一时间从 authorized_keys 里删掉对应那一行。密钥登录不是银弹,但它把“被字典撞开”这个最常见的风险降到了接近零,值得给每一台公网服务器都配上。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。