系统维护

optimize_centos7_ssh.sh

适用于 SSH 登录明显变慢的 CentOS 7 老主机,常见根因是 sshd 等待反向 DNS、GSSAPI 协商或 IPv6 回退。脚本会先备份 sshd_config,再写入推荐配置、校验语法,然后重启 sshd。

一键命令

curl -fL 'https://www.helper.sh/optimize_centos7_ssh.sh' -o './optimize_centos7_ssh.sh'

此命令只下载本站文件,不会执行。请先检查保存的源码并核对版本,再决定是否运行。

核对已下载文件

与本页面构建时内置的确切字节比较。文件只在当前标签页处理,此工具不上传、不持久化文件。上限 2 MiB。

预期 SHA-256
83286133883b50a41d5a144397e9d4d380e14f8a0e3bf25be90348b92d678c53

内置文件字节数: 1589

保存校验文件

将脚本和校验文件保存在同一目录。Linux 安装 GNU Coreutils 后可用下方命令只检查字节,不运行脚本;使用此命令时需保留原文件名。

sha256sum --check './optimize_centos7_ssh.sh.sha256'

尚未比较。

校验值与脚本来自同一网站,不是独立签名。一致不证明安全、上游依赖真实可信或适合本机;可变远程依赖需单独审阅。

查看验证与限制

运行要求

  • CentOS 7 或类似 OpenSSH 主机
  • 需要 root 权限或 sudo
  • 存在 /etc/ssh/sshd_config
  • 可用 systemctl 或 service

适用场景

  • 缩短由反向 DNS 解析导致的 SSH 登录等待时间
  • 在不用 Kerberos 的主机上关闭 GSSAPI 认证
  • 把 CentOS 7 维护中的 SSH 加速步骤标准化

脚本亮点

  • 修改前自动生成带时间戳的 sshd_config 备份
  • 幂等写入 UseDNS no、GSSAPIAuthentication no 和 AddressFamily inet
  • 重启前先执行 sshd -t,避免错误配置直接生效

推荐流程

  1. 用 curl 从 helper.sh 拉取脚本。
  2. 以 root 或 sudo 方式执行。
  3. 让脚本自动完成备份、修改、校验和重启 sshd。
  4. 重新 SSH 连接,确认卡顿是否消失。

安全提示

  • 如果是生产关键主机,建议先审阅原始脚本再执行。
  • 如果服务器依赖 Kerberos 或纯 IPv6 连通,不要直接套用这些默认值。
  • 测试重启时保留一个现有 SSH 会话,避免把自己锁在门外。

兼容范围与限制

  • CentOS 7 已结束支持;此脚本仅适合旧环境维护或迁移准备,不是长期平台建议。
  • 需要 root、/etc/ssh/sshd_config、sshd -t,以及 systemctl 或 service。没有用户参数、dry-run 或自动回滚。脚本只编辑这一个文件,不检查被 Include 的配置文件。
  • AddressFamily inet 会让 sshd 只监听 IPv4。GSSAPIAuthentication no 会关闭 GSSAPI/Kerberos SSH 认证;如果客户端或策略依赖它们,不要应用。UseDNS no 会关闭反向查询;OpenSSH 文档说明,此设置下 authorized_keys 的 from 和 sshd_config 的 Match Host 不能使用主机名。

受影响的文件、服务和数据

  • /etc/ssh/sshd_config:编辑前创建带时间戳副本,然后新增或替换 UseDNS、GSSAPIAuthentication、AddressFamily 指令。
  • `sshd -t` 成功后重启 sshd 服务。不修改端口或应用数据。

只读核验

  • 执行前用 `sudo sshd -T | grep -E '^(usedns|gssapiauthentication|addressfamily) '` 检查当前生效值。
  • 安排维护窗口后再执行;之后检查 `sudo sshd -t`、`sudo systemctl status sshd`(或 `sudo service sshd status`),保持当前 SSH 会话,并从另一终端按所需地址族测试新连接。

失败后的下一步

若 sshd -t 失败,脚本会退出但保留已编辑文件。保持当前会话,检查报错行;必要时手动从带时间戳的备份恢复。若服务重启失败,查看 `sudo journalctl -u sshd -n 100 --no-pager`,不要关闭仍可用的会话。

参考文档

CentOS 7 手册存档来自镜像站。OpenBSD 当前手册仅作上游参考,不保证与 CentOS 7 所带版本完全一致。

先下载、审阅并核对版本,再决定是否执行。哈希只能标识这一版字节,不能证明安全。pipe 命令会立即执行远程内容;上游依赖也可能变化。

相关专题

CentOS 7:选择恢复任务

变更已结束支持的主机前,先区分仓库故障、SSH 访问问题和 Docker 存储压力。

查看专题

问题页面

为什么 CentOS 7 的 SSH 登录很慢

最常见的根因是反向 DNS 解析、GSSAPI 认证协商,以及部分老环境里的 IPv6 回退。先把这些等待关掉,再做更深的 SSH 排查。

打开页面