密钥登录的核心优势
- 安全性
- 私钥存储在本地,公钥在服务器,破解难度远高于密码。
- 支持禁用密码登录,彻底杜绝密码爆破风险。
- 便捷性
免去每次输入密码的麻烦,适合自动化脚本(如CI/CD)。
- 符合安全规范
金融、云计算等场景强制要求密钥登录(如AWS/Aliyun)。
密钥登录配置步骤
步骤1:本地生成密钥对(在客户端操作)
ssh-keygen -t ed25519 -C "your_email@example.com" # 推荐ed25519算法
- 操作提示:
- 按回车使用默认存储路径(
~/.ssh/id_ed25519
)。 - 设置密钥密码(Key Passphrase)可增加二次保护(可选)。
- 按回车使用默认存储路径(
- 生成文件:
- 私钥:
~/.ssh/id_ed25519
(权限需为600) - 公钥:
~/.ssh/id_ed25519.pub
- 私钥:
⚠️ 关键权限设置
执行命令确保私钥安全:chmod 600 ~/.ssh/id_ed25519
步骤2:上传公钥到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip
- 输入服务器密码后,公钥会自动写入
~/.ssh/authorized_keys
。 - 手动方案(若无
ssh-copy-id
):cat ~/.ssh/id_ed25519.pub | ssh user@server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"
步骤3:服务器端配置(以OpenSSH为例)
- 编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config
- 修改以下参数:
PubkeyAuthentication yes # 启用密钥认证 PasswordAuthentication no # 禁用密码登录(测试后再启用!) AuthorizedKeysFile .ssh/authorized_keys
- 重启SSH服务:
sudo systemctl restart sshd
步骤4:测试密钥登录
ssh -i ~/.ssh/id_ed25519 user@server_ip
- 成功登录后,再禁用密码登录(避免配置错误被锁)。
安全加固与故障处理
必做权限检查
chmod 600 ~/.ssh/authorized_keys
- 权限错误会导致登录失败(常见错误:
Permission denied (publickey)
)。
禁用密码登录(增强安全)
确认密钥登录成功后,在sshd_config
中设置:
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no
故障排查
- 登录失败:
- 检查客户端私钥路径:
ssh -i /path/to/private_key user@ip
- 查看服务器日志:
sudo tail -f /var/log/auth.log
- 临时启用密码登录:
sudo systemctl restart sshd
- 检查客户端私钥路径:
- 备份密钥:
私钥丢失无法恢复!建议加密备份到安全位置。
高级场景
- 多密钥管理
在客户端~/.ssh/config
中配置:Host myserver HostName server_ip User user IdentityFile ~/.ssh/custom_key
直接使用
ssh myserver
登录。 - 跨平台使用
- Windows:用PuTTYgen导入私钥,或WSL直接使用
ssh-keygen
。 - macOS/Linux:原生支持OpenSSH。
- Windows:用PuTTYgen导入私钥,或WSL直接使用
密钥登录是Linux服务器安全的基石,通过生成密钥对、上传公钥、配置服务端三步操作,即可实现免密安全登录。务必在测试后禁用密码登录,并定期审计密钥使用情况,企业环境建议结合证书颁发机构(CA)进一步强化信任链。
引用说明:
- OpenSSH官方文档:https://www.openssh.com/manual.html
- Linux
man
手册(命令:man ssh-keygen
,man sshd_config
)- NIST安全指南(SP 800-53)关于密钥管理的要求
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4949.html