温馨提示×

Ubuntu SSH性能优化怎么做

小樊
34
2025-12-28 00:22:44
栏目: 智能运维

Ubuntu SSH性能优化清单

一 快速定位瓶颈

  • 使用详细日志定位卡点:ssh -v user@host,若长时间停在“Next authentication method: gssapi-with-mic”,多半是 GSSAPI 导致;若建立连接后输入命令回显慢,常见于 DNS 反向解析耗时。
  • 用基准测试衡量改动效果:time ssh user@host exit,对比优化前后的耗时差异。
  • 检查服务器端解析链路:/etc/nsswitch.confhosts: 行若包含 dns 且 DNS 不可达,会放大连接时延;必要时临时改为 hosts: files 验证。
  • 修改配置后重启服务:sudo systemctl restart ssh(或 ssh.service)。

二 服务器端优化

  • 关闭 DNS 反向解析:在 /etc/ssh/sshd_config 设置 UseDNS no,可显著缩短握手时间。
  • 禁用 GSSAPI 认证:设置 GSSAPIAuthentication no(无 Kerberos 环境),避免 GSS 协商带来的额外往返。
  • 启用压缩:设置 Compression yes,在带宽受限或传输文本/日志时有效(CPU 开销略增)。
  • 限制并发未认证连接:设置 MaxStartups 10:30:60(示例值),抵御暴力破解并避免资源被耗尽。
  • 仅启用安全协议与算法:确保 Protocol 2,禁用过时协议与弱算法。
  • 调整内核网络参数(可选):在 /etc/sysctl.conf 启用 net.ipv4.tcp_window_scaling=1,选择拥塞控制算法如 net.ipv4.tcp_congestion_control=cubic,执行 sudo sysctl -p 生效。
  • 重启服务:sudo systemctl restart ssh

三 客户端优化

  • 使用连接保活避免断流与卡顿:在 ~/.ssh/config 或命令行加入
    ConnectTimeout=10ServerAliveInterval=30ServerAliveCountMax=3TCPKeepAlive=yes
  • 关闭不必要的转发:在客户端设置 ForwardAgent noForwardX11 no,减少额外通道开销。
  • 选择更快的密钥交换与加密:在 ~/.ssh/config 指定
    KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256
    Cipher aes256-ctr(兼顾性能与安全性)。
  • 复用连接与持久会话:配置 ControlMaster autoControlPath ~/.ssh/sockets/%r@%h:%pControlPersist 600,或使用 tmux/screen 保持会话。
  • 使用最新客户端:执行 sudo apt update && sudo apt install --only-upgrade openssh-client

四 认证与会话策略

  • 优先使用 SSH 密钥认证(禁用密码),既更快也更安全;配合 ssh-agent 减少重复解密开销。
  • 保持连接复用:通过 ControlMaster 复用已有连接,避免频繁握手带来的延迟。
  • 会话不中断:使用 tmux/screenClientAliveInterval/ServerAliveInterval 保活,网络抖动时不易卡死。
  • 高丢包/高延迟网络:考虑 Mosh(UDP 自适应,断线恢复快),安装:sudo apt-get install mosh,连接:mosh user@host

五 安全与维护建议

  • 修改默认端口(可选):将 Port 22 改为高位端口,并同步更新防火墙放行规则,有助于减少自动化攻击噪音。
  • 限制登录速率与并发:通过 MaxStartups 与防火墙/入侵防护策略降低暴力破解风险。
  • 持续监控:定期检查 /var/log/auth.log,关注失败登录与异常来源。
  • 变更流程:修改前备份配置(如 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak-$(date +%F)),变更后在测试环境验证,再重启服务。

0