Linux服务器SSH密钥登录配置全攻略
在Linux服务器管理中,SSH密钥登录比传统密码登录更安全、更方便。本文将详细介绍如何在Linux服务器上配置SSH密钥登录,帮助你告别繁琐的密码输入,提升服务器安全等级。
一、为什么要使用SSH密钥登录?
相较于传统密码登录,SSH密钥登录具有以下显著优势:
- 更高的安全性:密钥比密码更难被暴力破解
- 免密码登录:配置后无需每次输入密码
- 便于自动化:适合脚本和自动化工具使用
- 多账户管理:可为不同服务器配置不同密钥
二、生成SSH密钥对
在本地计算机上生成密钥对是第一步:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
执行上述命令后,系统会提示你:
- 选择密钥保存位置(默认~/.ssh/id_rsa)
- 设置密钥密码(可选,建议设置)
生成完成后,你将在~/.ssh目录下看到两个文件:
- id_rsa - 私钥(必须妥善保管)
- id_rsa.pub - 公钥(需上传到服务器)
三、将公钥上传到服务器
有多种方法可以将公钥上传到服务器:
方法1:使用ssh-copy-id工具
ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip
这是最简单的方法,会自动将公钥添加到服务器的~/.ssh/authorized_keys文件中。
方法2:手动复制
如果服务器没有ssh-copy-id工具,可以手动操作:
cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
方法3:通过SFTP上传
使用SFTP客户端将公钥文件上传到服务器的~/.ssh目录,然后执行:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
四、服务器端配置
为确保安全,需要进行以下服务器配置:
-
设置正确的权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys -
修改SSH服务器配置:编辑/etc/ssh/sshd_config文件
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no # 禁用密码登录(可选) -
重启SSH服务:
sudo systemctl restart sshd
五、测试密钥登录
配置完成后,测试是否能正常登录:
ssh -i ~/.ssh/id_rsa username@server_ip
如果设置了密钥密码,会提示输入密钥密码而非服务器密码。
六、高级配置技巧
1. 多密钥管理
为不同服务器使用不同密钥:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/server1_key -C "server1专用密钥"
使用时指定密钥:
ssh -i ~/.ssh/server1_key user@server1
2. SSH配置文件简化
编辑~/.ssh/config文件:
Host myserver
HostName server_ip
User username
IdentityFile ~/.ssh/id_rsa
Port 22
配置后只需输入:
ssh myserver
3. 密钥代理
避免重复输入密钥密码:
eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa
七、常见问题解决
- Q1: 连接被拒绝(Connection refused)
- 检查服务器SSH服务是否运行,防火墙是否放行22端口
- Q2: 权限被拒绝(Permission denied)
- 检查authorized_keys文件权限是否为600,.ssh目录权限是否为700
- Q3: 仍然要求输入密码
- 检查sshd_config中PubkeyAuthentication是否设为yes,是否重启了SSH服务
通过本文的详细指导,你应该已经成功配置了SSH密钥登录。密钥登录不仅能提高安全性,还能大大提升工作效率。建议在完成配置并确认密钥登录正常后,禁用密码登录以获得最高级别的安全保护。
记住永远不要将私钥分享给他人,并考虑定期更换密钥对以增强安全性。
