返回列表 发布新帖
查看: 476|回复: 0

Linux 服务器添加 SSH 公钥认证并禁用密码登录

发表于 2025-8-12 16:12:06 | 查看全部 |阅读模式

这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1. 前言
SSH 公钥认证(Key-based Authentication)是一种比密码登录更安全的方式。它通过密钥对进行加密认证,避免了密码暴力破解风险。
本文将演示如何在 Linux 服务器上:
  • 添加 SSH 公钥认证
  • 测试密钥登录
  • 禁用密码登录
2. 准备 SSH 密钥对
如果你本地已经有密钥对,可以直接用;如果没有,需要先生成。
在本地电脑执行:
  1. ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
复制代码
  • -t rsa:生成 RSA 类型的密钥
  • -b 4096:密钥长度 4096 位
  • -C:注释(一般写邮箱)
默认会生成在:
  • 私钥:~/.ssh/id_rsa
  • 公钥:~/.ssh/id_rsa.pub
3. 上传公钥到服务器
有两种方式:
方法 1:ssh-copy-id(推荐)
  1. ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip
复制代码
会自动将公钥追加到服务器的 ~/.ssh/authorized_keys 文件中。
方法 2:手动上传
  1. scp ~/.ssh/id_rsa.pub user@server_ip:/tmp/mykey.pub
复制代码
  1. ssh user@server_ip
复制代码
  1. mkdir -p ~/.ssh
复制代码
  1. cat /tmp/mykey.pub >> ~/.ssh/authorized_keys
复制代码
  1. chmod 700 ~/.ssh
复制代码
  1. chmod 600 ~/.ssh/authorized_keys
复制代码
  1. rm -f /tmp/mykey.pub
复制代码
4. 测试密钥登录
在本地执行:
  1. ssh -i ~/.ssh/id_rsa user@server_ip
复制代码
如果能直接登录而不输入密码(或者只输入私钥密码短语),说明公钥认证成功。
5. 禁用密码登录
编辑服务器 SSH 配置文件:
  1. sudo nano /etc/ssh/sshd_config
复制代码
找到并修改:
PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes

  • PasswordAuthentication no → 禁用密码登录
  • PermitRootLogin prohibit-password → 禁止 root 用密码登录(也可以设为 no 完全禁用 root 登录)
  • PubkeyAuthentication yes → 启用公钥认证
保存后重启 SSH 服务:
  1. sudo systemctl restart sshd
复制代码
6. 注意事项
  • 一定要先测试公钥登录成功,再禁用密码登录,否则可能锁死服务器。
  • 如果是云服务器,部分云厂商后台可能有“密钥登录”开关,要保持一致。
  • 如果担心配置错误,可以在另一个终端保持原 SSH 会话不关闭,测试新配置没问题后再退出。
  • 建议为私钥设置密码短语,进一步提高安全性。
7. 验证
修改后执行:
  1. ssh user@server_ip
复制代码
如果是用密钥能正常登录 → 成功
如果用密码会提示:
  1. Permission denied (publickey).
复制代码
→ 表示密码登录已禁用
✅ 总结:
通过 SSH 公钥认证,你可以显著提升服务器安全性,防止密码暴力破解。运维中通常会配合更换 SSH 端口、限制 IP 登录、防火墙规则等方法,形成多层安全防护。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2026 Suike Tech All Rights Reserved. 随客交流社区 (备案号:津ICP备19010126号) |Processed in 0.100693 second(s), 7 queries , Gzip On, MemCached On.
关灯 在本版发帖返回顶部
快速回复 返回顶部 返回列表