云南全省16地州 · 上门+远程双模式服务覆盖 服务时间:工作日 8:00-21:00 / 紧急故障24小时
登录 注册 公众号:易云城IT运维服务
新客专享:首次上门立减20元 | VIP会员年费仅需99元,全年IT服务不限次 立即领取
首页 立即拨打 微信咨询 服务项目

Linux服务器SSH密钥认证配置与安全加固实战指南

易云城 2026-06-29 1 次阅读 常见问题
本文详细讲解如何在Linux服务器上配置基于密钥的SSH登录,替代不安全的密码验证。涵盖生成密钥对、分发公钥、修改sshd_config配置文件及禁用密码登录等关键步骤,并提供常见故障排查方法,帮助系统管理员提升服务器访问安全性与操作效率。

引言

在Linux服务器管理中,Secure Shell (SSH) 是最常用的远程管理协议。然而,传统的基于密码的认证方式存在被暴力破解的风险,且频繁输入密码降低了运维效率。为了提升服务器的安全性并优化操作体验,配置SSH密钥认证已成为中小企业IT人员和系统管理员的标准实践。本文将深入探讨如何正确配置SSH密钥,并配合安全加固措施,构建更可靠的远程访问环境。

一、 SSH密钥认证的工作原理

SSH密钥认证采用非对称加密技术,包含两个部分:

  • 私钥 (Private Key):保存在客户端(管理员电脑),必须严格保密,等同于个人的“数字身份证”。
  • 公钥 (Public Key):上传至服务器端的 ~/.ssh/authorized_keys 文件中,用于验证身份。

当客户端尝试连接时,服务器会使用公钥生成一个挑战码,客户端使用私钥解密并返回结果。若匹配成功,则允许登录。由于私钥永远不会通过网络传输,因此比密码更安全。

二、 生成SSH密钥对

在客户端机器(Windows或Linux)上生成密钥对是第一步。推荐使用Ed25519算法,相比传统的RSA,它更安全且性能更好。

1. Linux/macOS 用户

打开终端,执行以下命令:

ssh-keygen -t ed25519 -C "your_email@example.com"

系统会提示保存路径,默认情况下会保存在 ~/.ssh/id_ed25519。建议直接回车使用默认路径,并为私钥设置一个高强度的 passphrase(密码短语),以增加额外的保护层。

2. Windows 用户

现代Windows 10/11自带OpenSSH客户端。同样打开PowerShell或命令提示符,执行上述相同命令即可。若使用PuTTY等第三方工具,需使用PuTTYgen生成.ppk格式的密钥,并在后续步骤中转换格式或使用相应插件。

三、 将公钥分发到服务器

有多种方式可以将公钥部署到目标Linux服务器。

方法一:使用 ssh-copy-id 命令(推荐)

如果客户端支持ssh-copy-id(Linux/macOS默认支持),这是最简便的方法:

ssh-copy-id username@server_ip

输入服务器密码后,公钥会自动追加到服务器对应用户的 ~/.ssh/authorized_keys 文件中。

方法二:手动复制

若无法使用上述命令,可查看本地公钥内容:

cat ~/.ssh/id_ed25519.pub

复制输出内容,然后通过SSH登录服务器,编辑或创建 ~/.ssh/authorized_keys 文件,将内容粘贴进去并保存。

四、 服务器端安全加固配置

仅配置密钥认证是不够的,必须修改SSH服务端配置以禁用不安全的登录方式。

1. 编辑 sshd_config 文件

使用文本编辑器打开 /etc/ssh/sshd_config

sudo vim /etc/ssh/sshd_config

2. 关键参数调整

确保以下配置项正确设置:

  • PubkeyAuthentication yes:启用公钥认证。
  • PasswordAuthentication no至关重要,禁用密码登录,防止暴力破解。
  • PermitRootLogin prohibit-password:禁止root用户通过密码登录,但允许通过密钥登录(若完全禁止root登录,请使用 no)。
  • MaxAuthTries 3:限制最大认证尝试次数,减少暴力破解风险。

3. 重启SSH服务

修改配置后,重启SSH服务使更改生效:

  • Ubuntu/Debian: sudo systemctl restart ssh
  • CentOS/RHEL: sudo systemctl restart sshd

五、 常见故障排查与维护

配置过程中可能会遇到连接失败的情况,以下是常见问题及解决方案:

1. 权限错误 (Permission denied)

SSH对文件权限要求极严。请检查:

  • 服务器端用户主目录权限应为 700 (chmod 700 ~)。
  • .ssh 目录权限应为 700 (chmod 700 ~/.ssh)。
  • authorized_keys 文件权限应为 600 (chmod 600 ~/.ssh/authorized_keys)。
  • 文件所有者必须是当前登录用户,而非root。

2. 代理连接问题

如果配置了SSH Agent Forwarding,确保客户端运行了 ssh-agent 并添加了私钥 (ssh-add)。

3. 连接超时或拒绝

检查服务器防火墙是否开放了22端口(或自定义SSH端口)。使用 sudo iptables -L -nfirewall-cmd --list-all 进行检查。

六、 最佳实践建议

  1. 定期轮换密钥:虽然不像密码那样频繁,但建议每年或人员变动时重新生成密钥对。
  2. 备份私钥:将私钥备份到离线存储设备或安全的密钥管理器中,防止本地硬盘损坏导致无法登录。
  3. 使用跳板机 (Bastion Host):对于大型企业环境,建议通过一台经过严格安全加固的跳板机访问内部服务器,进一步收敛攻击面。
  4. 监控登录日志:定期检查 /var/log/auth.log/var/log/secure,监控异常登录尝试。

结语

通过实施SSH密钥认证并禁用密码登录,您可以显著提升Linux服务器的访问安全性,同时获得更流畅的自动化运维体验。虽然初期配置需要一定的技术知识,但其带来的长期安全收益和维护便利性是无价的。建议所有接触服务器管理的IT人员熟练掌握这一技能,并将其纳入标准的安全基线配置中。

觉得有用?分享给朋友吧
微博 QQ空间
上一篇
Windows 10/11更新后应用启动白屏:注册表权限...
下一篇
企业局域网内网访问慢排查:ARP欺骗与交换机环路实战...
💡 遇到类似问题?

易云城工程师帮您解决

远程协助30分钟响应 · 云南全省上门 · 先检测后报价

🔊 电话咨询 💬 在线留言

评论 (0)

暂无评论,来发表第一条吧~
预约
📅 立即预约 · 30分钟响应
紧急
⚡ 紧急故障 · 优先处理
13708730161
24小时紧急响应 · 云南全省上门
微信
微信扫码咨询
微信二维码
微信号:eyc1689
扫码添加,快速响应
报价
电话
1