Linux云服务器SSH密钥登录配置全攻略
在云计算时代,SSH密钥登录已成为Linux服务器安全管理的黄金标准。相比传统密码登录,密钥认证不仅更安全,还能实现自动化运维。本文将手把手教你从零开始配置SSH密钥登录,让你的云服务器固若金汤。
一、为什么要使用SSH密钥登录?
- 安全性翻倍:2048位RSA密钥的破解难度远超任何复杂密码
- 防御暴力破解:彻底杜绝字典攻击和暴力破解尝试
- 运维效率提升:无需记忆密码,特别适合多服务器管理
- 自动化支持:CI/CD等自动化流程必须依赖密钥认证
二、详细配置步骤
步骤1:生成密钥对
在本地终端执行(Windows可用Git Bash):
ssh-keygen -t rsa -b 4096 -C "[email protected]"
建议为密钥设置密码短语(passphrase)增加二次保护
步骤2:上传公钥到服务器
方法一:使用ssh-copy-id(最简便)
ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip
方法二:手动上传(适合高级用户)
scp ~/.ssh/id_rsa.pub username@server_ip:~/
ssh username@server_ip
mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
步骤3:服务器端关键配置
编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config
确保以下参数设置正确:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no # 禁用密码登录(谨慎操作)
PermitRootLogin prohibit-password
重启SSH服务使配置生效:
sudo systemctl restart sshd
三、进阶技巧与故障排除
1. 多密钥管理技巧
在~/.ssh/config中配置多服务器别名:
Host aliyun
HostName 123.123.123.123
User root
IdentityFile ~/.ssh/aliyun_key
Host aws
HostName ec2-1-2-3-4.compute-1.amazonaws.com
User ubuntu
IdentityFile ~/.ssh/aws_key
2. 常见问题解决方案
- 权限问题:确保~/.ssh目录权限为700,authorized_keys为600
- 连接被拒绝:检查服务器防火墙是否开放22端口
- SELinux阻止:执行
restorecon -Rv ~/.ssh - 调试模式:使用
ssh -vT user@host查看详细错误
安全提醒
❌ 切勿将私钥(id_rsa)上传到任何公开位置
✅ 建议定期轮换密钥(至少每6个月一次)
🔒 对重要服务器启用双重认证(2FA)
四、各大云平台特殊配置
| 云平台 | 特殊配置 | 密钥位置 |
|---|---|---|
| 阿里云 | 需在控制台绑定密钥对后重启实例 | /root/.ssh/authorized_keys |
| AWS EC2 | 使用.pem密钥文件,默认用户为ec2-user或ubuntu | /home/ec2-user/.ssh/authorized_keys |
| 腾讯云 | 支持控制台直接注入密钥 | /home/ubuntu/.ssh/authorized_keys |
通过本文的详细指导,您应该已经成功配置了SSH密钥登录。这种认证方式不仅能大幅提升服务器安全性,还能为自动化运维铺平道路。建议将本文加入书签,在配置新服务器时可随时参考。
如仍有疑问,欢迎在评论区留言讨论!
