Linux 服务器添加 SSH 公钥认证并禁用密码登录
1. 前言SSH 公钥认证(Key-based Authentication)是一种比密码登录更安全的方式。它通过密钥对进行加密认证,避免了密码暴力破解风险。
本文将演示如何在 Linux 服务器上:
[*]添加 SSH 公钥认证
[*]测试密钥登录
[*]禁用密码登录
2. 准备 SSH 密钥对
如果你本地已经有密钥对,可以直接用;如果没有,需要先生成。
在本地电脑执行:
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(推荐)
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip会自动将公钥追加到服务器的 ~/.ssh/authorized_keys 文件中。
方法 2:手动上传
scp ~/.ssh/id_rsa.pub user@server_ip:/tmp/mykey.pubssh user@server_ipmkdir -p ~/.sshcat /tmp/mykey.pub >> ~/.ssh/authorized_keyschmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keysrm -f /tmp/mykey.pub4. 测试密钥登录
在本地执行:
ssh -i ~/.ssh/id_rsa user@server_ip如果能直接登录而不输入密码(或者只输入私钥密码短语),说明公钥认证成功。
5. 禁用密码登录
编辑服务器 SSH 配置文件:
sudo nano /etc/ssh/sshd_config找到并修改:
PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes
[*]PasswordAuthentication no → 禁用密码登录
[*]PermitRootLogin prohibit-password → 禁止 root 用密码登录(也可以设为 no 完全禁用 root 登录)
[*]PubkeyAuthentication yes → 启用公钥认证
保存后重启 SSH 服务:
sudo systemctl restart sshd6. 注意事项
[*]一定要先测试公钥登录成功,再禁用密码登录,否则可能锁死服务器。
[*]如果是云服务器,部分云厂商后台可能有“密钥登录”开关,要保持一致。
[*]如果担心配置错误,可以在另一个终端保持原 SSH 会话不关闭,测试新配置没问题后再退出。
[*]建议为私钥设置密码短语,进一步提高安全性。
7. 验证
修改后执行:
ssh user@server_ip如果是用密钥能正常登录 → 成功
如果用密码会提示:
Permission denied (publickey).→ 表示密码登录已禁用
✅ 总结:
通过 SSH 公钥认证,你可以显著提升服务器安全性,防止密码暴力破解。运维中通常会配合更换 SSH 端口、限制 IP 登录、防火墙规则等方法,形成多层安全防护。
页:
[1]