30分钟快速响应 24小时紧急待命 云南16地州
新客立减20元 登录 注册 公众号: 易云城IT运维服务

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

易云城 来源:原创 2026-06-30 20 次阅读 硬件故障维修
看完了还搞不定?这类问题我上门 / 远程帮你处理
城区1小时上门 · 30分钟响应 · 先检测后报价 · 修不好不收费
本文提供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-password 或 no,禁止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运维人员不可忽视的安全习惯。

觉得有用?分享给朋友吧
💡 遇到类似问题?

易云城工程师帮您解决

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

遇到类似问题?我帮你看一眼

留个手机号,我今天就联系你,帮你判断是什么问题、大概要多少钱。 30 分钟响应,2 小时出报价,先检测后报价——没上门之前不收任何费用。你的号码只用于这一次联系。

也可以直接打 13708730161, 或到 留言页 描述情况。

阅读本文后,推荐您试试这些
免费 · 随意保存

别用手机流量搜工具了

我现在就给你发 137 款运维工具的官方直链,存手机里应急用,不着急装也可以等师傅上门。

🔥 限时特惠

升级VIP会员,解锁全部IT工具

137款专业运维工具 · 系统镜像/WinPE · 工程师1对1远程支持

系统工具包 数据恢复工具 网络诊断工具 安全防护工具
¥ 99 /年 约 0.27元/天
立即开通
相关服务

评论

评论功能开发中,敬请期待~