云服务器SSH密钥登录全攻略:从生成到安全配置
1. 为什么SSH密钥登录比密码更安全?
每次登录云服务器都要输入密码,不仅麻烦还容易被人盯上。想象一下密码就像你家门钥匙,如果被偷了或者被人猜到了,谁都能进你家。而SSH密钥登录相当于给门锁加了指纹识别系统——需要同时拥有你的指纹(私钥)和门锁的识别程序(公钥)才能开门。
我管理过上百台服务器,早期也用过密码登录,直到有次发现服务器被暴力破解攻击后才彻底转向密钥登录。实测下来密钥登录有三大优势:首先破解难度呈指数级上升(2048位的RSA密钥相当于600位的随机密码);其次完全避免中间人攻击;最重要的是可以彻底关闭密码登录,从根本上堵住漏洞。
2. 五分钟生成你的第一对SSH密钥
打开终端(Windows用户可以用Git Bash),我们先用最基础的RSA算法生成密钥对:
ssh-keygen -t rsa -b 4096 -C "你的邮箱或备注"
这里-t指定算法类型,-b确定密钥长度。我强烈建议用4096位而不是默认的2048位,现在量子计算机发展这么快,密钥长点更安心。执行后会让你选择保存路径,直接回车用默认的~/.ssh/id_rsa就行。
接下来要设置密钥密码(passphrase),这是个容易踩坑的地方。很多人直接回车跳过,但我建议一定要设置!这样即使私钥文件泄露,没有密码也白搭。就像保险箱有两道锁:钥匙+密码才最稳妥。
生成完成后,你的~/.ssh目录下会出现两个文件:
id_rsa:这就是要绝对保密的私钥,权限必须是600id_rsa.pub:可以随便分发公钥,内容长得像ssh-rsa AAAAB3...
重要提示:千万不要把私钥发给任何人!我见过有开发者把私钥上传到GitHub的,结果服务器被挖矿程序攻占。
3. 服务器端的详细配置指南
现在把公钥部署到服务器上,这里有个效率技巧:直接用ssh-copy-id命令一键完成:
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@服务器IP
如果没这个命令,也可以手动操作:
- 登录服务器后编辑
~/.ssh/authorized_keys - 把本地
id_rsa.pub的内容粘贴进去 - 关键一步:改权限!
chmod 600 ~/.ssh/authorized_keys
接着修改SSH服务配置,用vim打开/etc/ssh/sshd_config,确保这些参数:
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no
ChallengeResponseAuthentication no
特别注意:改配置前一定要另开一个终端保持登录状态!我有次手滑改错配置直接把自己锁在服务器外面,最后只能去控制台重置。
4. 高级安全加固方案
基础配置完成后,可以进一步强化安全:
端口隐身术:
- 修改默认22端口:
Port 54321 - 配合防火墙规则:
iptables -A INPUT -p tcp --dport 54321 -j ACCEPT
IP白名单:
AllowUsers 用户名@你的IP
AllowGroups ssh-users
密钥轮换策略:
- 生成新密钥对时用
-f指定新文件名 - 新旧密钥同时在authorized_keys保留一周
- 用
ssh -i指定密钥测试无误后再删除旧密钥
监控技巧:
# 查看失败登录尝试
grep 'Failed password' /var/log/auth.log
# 实时监控登录情况
tail -f /var/log/secure
5. 各云平台的特殊设置
不同云服务商有些细节差异:
阿里云/腾讯云:
- 创建实例时可以直接上传公钥
- 控制台能一键绑定/解绑密钥
- 注意:部分镜像默认关闭密钥登录,需要手动开启
AWS EC2:
- 使用
.pem格式的密钥对 - 连接时需指定密钥路径:
ssh -i key.pem ec2-user@ip
华为云:
- 支持批量绑定密钥到多台服务器
- 提供密钥对托管服务(但我还是建议自己保管私钥)
6. 常见故障排查手册
**连不上怎么办?**按这个顺序检查:
ssh -v查看详细报错- 确认网络连通性:
telnet 服务器IP 端口 - 检查服务状态:
systemctl status sshd - 查看日志:
journalctl -u sshd -f
权限问题:
- 服务器端
.ssh目录权限必须是700 authorized_keys权限必须是600- 私钥文件在本地的权限也必须是600
密钥被拒绝:
- 先用密码登录检查authorized_keys内容
- 确认公钥格式完整(不能换行或空格)
- 尝试重新上传公钥
7. 密钥管理的最佳实践
经过多次踩坑后,我总结出这些经验:
- 不同服务器用不同密钥对(重要业务单独隔离)
- 使用密码管理器保管私钥密码
- 定期轮换密钥(建议每3-6个月)
- 离职员工要及时删除其公钥
- 备份!备份!备份!(但要用加密U盘存放)
对于团队协作,建议:
- 搭建跳板机集中管理访问权限
- 使用HashiCorp Vault等工具做密钥分发
- 记录详细的密钥发放/回收日志
更多推荐
所有评论(0)