在Linux中配置SSH密钥登录并禁用root密码登录
本文详细介绍了在Linux服务器上配置SSH密钥认证并禁用root密码登录的完整流程。通过使用
ssh-keygen生成密钥对、部署公钥至服务器,并修改SSH配置文件以启用密钥认证,可大幅提升系统安全性。关键步骤包括:生成密钥后务必先测试密钥登录成功,再谨慎禁用密码认证。此方法能有效防御暴力破解攻击,是服务器安全加固的基础实践。实施后需妥善保管私钥,并确保留有应急访问途径。
博主博客
概述
使用SSH密钥对进行身份验证是提升Linux服务器安全性的有效方法。相比传统的密码登录,密钥认证具有更高的抗暴力破解能力,且可通过禁用密码登录进一步降低安全风险。本文将详细介绍如何配置SSH密钥登录并禁用root用户的密码登录功能。
配置步骤
1. 生成SSH密钥对
首先以root用户登录服务器,执行以下命令生成RSA密钥对:
ssh-keygen -t rsa
执行后会遇到以下提示,建议按如下方式操作:
- 保存路径提示:直接按回车使用默认路径
/root/.ssh/id_rsa - 密码短语:可为密钥设置额外的密码保护(留空则直接回车)
- 确认密码短语:重复输入相同的密码短语
成功生成后,终端会显示类似以下信息:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
2. 密钥文件说明
在 /root/.ssh/ 目录下会生成两个文件:
- id_rsa:私钥文件,需妥善保管在本地计算机
- id_rsa.pub:公钥文件,可公开部署到服务器
安全建议:生成后可将私钥下载到本地安全存储,并考虑删除服务器上的私钥副本,但请务必确保本地备份可靠,否则将导致无法登录。
3. 配置公钥授权
将公钥导入授权文件,使服务器接受该密钥进行身份验证:
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
4. 修改SSH服务配置
编辑SSH配置文件 /etc/ssh/sshd_config,确保以下设置生效:
# 启用RSA认证
RSAAuthentication yes
# 启用公钥认证
PubkeyAuthentication yes
# 指定授权密钥文件路径
AuthorizedKeysFile .ssh/authorized_keys
如果这些行前面有 # 注释符号,请将其移除。
5. 重启SSH服务
应用配置更改(根据系统版本选择相应命令):
# 对于使用systemctl的系统(如CentOS 7+/Ubuntu 16.04+)
systemctl restart sshd
# 对于使用service的传统系统
service sshd restart
6. 测试密钥登录
在继续下一步之前,请务必打开新的终端会话测试密钥登录是否正常工作。 这是关键的安全步骤,确保不会因后续配置而失去服务器访问权限。
7. 禁用密码登录(可选但推荐)
确认密钥登录成功后,可禁用密码登录以增强安全性。
编辑 /etc/ssh/sshd_config 文件,找到以下配置:
PasswordAuthentication yes
将其修改为:
PasswordAuthentication no
再次重启SSH服务:
systemctl restart sshd # 或 service sshd restart
注意事项与最佳实践
- 备份原始配置:修改关键配置文件前,建议先备份:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
- 权限设置:确保相关文件具有正确的权限:
chmod 700 /root/.sshchmod 600 /root/.ssh/authorized_keys
-
多用户环境:如果服务器有多个用户,应在各自家目录的
.ssh/文件夹下配置密钥,避免全部使用root密钥。 -
紧急访问:在禁用密码登录前,请确保有其他可用的访问方式(如控制台访问),以防密钥丢失或配置错误导致无法登录。
-
密钥管理:
- 为不同服务器使用不同的密钥对
- 定期更新密钥对(建议每6-12个月)
- 使用强密码短语保护私钥
-
兼容性说明:如使用Windows客户端,建议使用
ssh-keygen生成密钥而非PuTTYgen,或使用PuTTYgen将OpenSSH格式密钥转换为PPK格式,以确保兼容性。
总结
通过配置SSH密钥登录并禁用root密码登录,可显著提升服务器的安全性,有效防御暴力破解攻击。此配置结合了便利性与安全性,是现代服务器安全管理的标准实践之一。实施后请妥善保管私钥,并定期审查安全设置以应对新的威胁。
在Linux中配置SSH密钥登录并禁用root密码登录
https://blog.uso6.com/archives/zai-linuxzhong-pei-zhi-sshmi-yao-deng-lu-bing-jin-yong-rootmi-ma-deng-lu
评论