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

Linux服务器SSH密钥登录配置与密码禁用详解

易云城 2026-06-30 1 次阅读 硬件故障维修
本文提供Linux服务器SSH安全加固的完整操作指南。详细讲解如何在客户端生成RSA/Ed25519密钥对,如何将公钥部署至服务端,并配置sshd_config文件强制禁用密码登录。适用于提升企业IT基础设施安全性,防止暴力破解攻击。

引言

在IT外包服务与企业运维实践中,SSH(Secure Shell)是管理Linux服务器最核心的协议。然而,默认的基于密码的身份验证方式存在严重的安全隐患,容易遭受暴力破解攻击。采用SSH密钥对进行身份验证,不仅能大幅提升连接安全性,还能简化自动化脚本的执行流程。本文将详细介绍配置SSH密钥登录并禁用密码认证的完整步骤。

第一步:生成SSH密钥对

首先,需要在客户端机器(通常是管理员的工作站或跳板机)上生成私钥和公钥。推荐使用Ed25519算法,因其安全性高且性能好;若需兼容旧版本系统,可使用RSA算法。

1. 打开终端

在Linux/macOS系统中打开终端,在Windows系统中可使用Git Bash或OpenSSH客户端。

2. 执行生成命令

Ed25519算法推荐:

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

RSA算法备选:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

执行后,系统会提示保存路径(默认~/.ssh/id_ed25519或id_rsa),直接回车即可。接着会要求设置密码短语(Passphrase),建议设置高强度密码以增强私钥保护,若希望免密登录可留空。

第二步:部署公钥至服务器

生成密钥对后,需要将公钥内容复制到目标Linux服务器的authorized_keys文件中。

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

这是最简单且自动处理权限的方法:

ssh-copy-id username@server_ip

输入服务器密码后,公钥将自动追加到~/.ssh/authorized_keys中。

方法二:手动复制

若无法使用ssh-copy-id,可手动操作:

  1. 查看并复制公钥内容:
    cat ~/.ssh/id_ed25519.pub
  2. 通过SSH登录服务器:
    ssh username@server_ip
  3. 在服务器上创建目录并设置权限:
    mkdir -p ~/.ssh && chmod 700 ~/.ssh
  4. 将公钥内容追加到authorized_keys:
    echo "公钥内容" >> ~/.ssh/authorized_keys
  5. 设置文件权限:
    chmod 600 ~/.ssh/authorized_keys

第三步:验证密钥登录

在禁用密码前,务必验证密钥登录是否正常工作。

尝试连接服务器:

ssh username@server_ip

如果设置了密码短语,系统会提示输入 passphrase。若能成功进入服务器命令行,说明配置无误。**注意:此时不要关闭当前终端窗口**,建议新开一个窗口进行后续测试,以防配置失误导致无法连接。

第四步:禁用SSH密码登录

确认密钥登录后,需修改服务器端的SSH配置文件以禁用密码验证,从而彻底杜绝暴力破解风险。

1. 编辑sshd_config

使用文本编辑器打开配置文件:

sudo vi /etc/ssh/sshd_config

2. 修改关键参数

找到并修改以下行(若无则手动添加):

  • PermitRootLogin:建议设为 prohibit-passwordno,禁止root账户远程登录。
  • PasswordAuthentication:设为 no,禁用密码认证。
  • PubkeyAuthentication:确保设为 yes,启用公钥认证。
  • ChallengeResponseAuthentication:设为 no,禁用挑战响应认证(通常用于键盘交互式密码)。

3. 重启SSH服务

保存退出后,重启SSH服务使配置生效:

sudo systemctl restart sshd

若使用Ubuntu/Debian,服务名为ssh;若使用CentOS/RHEL,服务名为sshd。

第五步:安全加固与故障排除

常见故障:Permission denied (publickey)

如果遇到此错误,请检查以下几点:

  1. 权限问题:服务器上的~/.ssh目录权限必须为700,authorized_keys权限必须为600。私钥在客户端也必须为600(chmod 600 ~/.ssh/id_ed25519)。
  2. SELinux/AppArmor:某些Linux发行版启用了强制访问控制,可能阻止SSH读取密钥。可使用 restorecon -Rv ~/.ssh 修复上下文。
  3. 用户家目录权限:确保用户的主目录权限不是777或其他开放权限,否则SSH会拒绝使用密钥。

额外建议:更改SSH端口

除了禁用密码,修改默认端口22也能减少大部分自动化扫描攻击。在sshd_config中修改 Port 2222,并在防火墙中相应放行。

结语

通过实施SSH密钥登录并禁用密码认证,企业IT环境的安全基线得到了显著提升。这一配置虽然简单,但却是防御横向移动和外部入侵的第一道坚实防线。定期审查SSH配置和密钥权限,是IT运维人员不可忽视的安全习惯。

觉得有用?分享给朋友吧
微博 QQ空间
上一篇
IT外包视角:Windows服务器补丁更新失败的深度排查...
下一篇
企业网络频繁闪断排查:DHCP租约冲突与MTU不匹配实战...
💡 遇到类似问题?

易云城工程师帮您解决

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

🔊 电话咨询 💬 在线留言

评论 (0)

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