Linux ssh密钥登录禁用密码

为什么要禁用SSH密码登录

使用密码登录SSH存在被暴力破解的风险。
配置SSH密钥登录后,只有持有私钥的设备才能连接服务器,同时彻底禁用密码,能极大提升安全性。
本文教你从零开始完成“Linux ssh密钥登录禁用密码”的全过程。

前置准备

  • 本地电脑(Windows/macOS/Linux)上已有SSH客户端(Windows建议使用PowerShell或Git Bash)。
  • 一台Linux服务器(本文以Ubuntu 20.04为例,CentOS同样适用),确保已开通SSH端口(默认22)。
  • 服务器端已有root或sudo权限。

第一步:在本地生成SSH密钥对

打开本地终端(Windows打开PowerShell或CMD),执行:

ssh-keygen -t ed25519 -C "你的邮箱或备注"
  • 按回车确认默认路径(~/.ssh/id_ed25519)。
  • 提示输入密码短语(passphrase)时可留空直接回车,或者设置一个额外保护。
  • 执行完成后,本地 ~/.ssh/ 目录下会生成两个文件:id_ed25519(私钥,请勿泄露)和 id_ed25519.pub(公钥,需上传到服务器)。

第二步:将公钥上传到服务器

使用 ssh-copy-id 命令将公钥复制到服务器:

ssh-copy-id -i ~/.ssh/id_ed25519.pub 用户名@服务器IP
  • 输入当前密码完成验证,公钥会自动追加到服务器上对应用户的 ~/.ssh/authorized_keys 文件中。
  • 如果没有 ssh-copy-id,可用手动方式:将 id_ed25519.pub 内容粘贴到服务器 ~/.ssh/authorized_keys(一行一条)。

第三步:测试密钥登录

在本地执行:

ssh 用户名@服务器IP

如果不需要密码直接登录,说明密钥认证生效。注意:此时密码登录仍开启,请先保留一个已连接的会话,避免配置错误后无法登录。

第四步:禁用密码登录

使用root或sudo权限编辑SSH配置文件:

sudo vim /etc/ssh/sshd_config

找到并修改以下参数:

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
  • 保存退出(:wq)。
  • 重启SSH服务:
sudo systemctl restart sshd

(CentOS使用 systemctl restart sshd,部分旧版用 service ssh restart

关键避坑提醒

  1. 始终保留一个登录会话:修改配置后不要关闭当前的SSH连接,先另开一个终端测试新连接能否成功。如果失败,用原会话恢复配置。
  2. 防火墙和安全组:确保服务器的防火墙或云服务商安全组放行了SSH端口(22)。禁用密码后如果密钥认证失效,你可能完全无法登录。
  3. 多个用户:如果你需要对多个用户禁用密码,每个用户都需要在自己目录下配置 authorized_keys。修改 PasswordAuthentication no 后,所有用户都将无法使用密码登录。
  4. 恢复访问:如果误操作导致无法登录,可通过服务器提供商的控制台VNC或救援模式进入系统,将 /etc/ssh/sshd_config 中的 PasswordAuthentication 改回 yes 并重启SSH。

效果验证

  • 在本地尝试使用密码登录:ssh -o PreferredAuthentications=password 用户名@服务器IP,应该返回 Permission denied (publickey)
  • 正常使用密钥登录应无阻碍。
  • 查看SSH日志确认:sudo journalctl -u sshd -n 20,可看到 Accepted publickey 记录。

常见问题(FAQ)

Q:修改配置后无法登录怎么办?
A:使用服务器控制台VNC或救援模式,修改回 PasswordAuthentication yes,重启SSH后再检查密钥配置。

Q:可以同时保留密码登录和密钥登录吗?
A:可以,但安全建议是禁用密码。如果必须保留,设置 PasswordAuthentication yes 并配合强密码。

Q:ssh-copy-id 提示权限错误?
A:检查服务器上 ~/.ssh 目录权限应为 700authorized_keys 权限为 600。使用 chmod 修正。

Q:Windows用户没有 ssh-copy-id 怎么办?
A:手动复制公钥内容,登录服务器后执行 echo "公钥内容" >> ~/.ssh/authorized_keys

完成以上步骤,你就成功实现了Linux SSH密钥登录并禁用了密码。
下次登录只需密钥,无需再输入密码,服务器安全性大幅提升。

分享到:
上一篇
Linux SELinux关闭与安全配置
下一篇
Linux进程占用100%CPU排查
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意