Ubuntu SSH 性能优化实用指南
一 快速定位瓶颈
ssh -v user@host,若长时间停在“Trying …”或“Next authentication method: gssapi-with-mic”,多与DNS 反向解析或GSSAPI相关。time ssh user@host exit,对比优化前后的总耗时。ss -lntp | grep :22 或 nc -vz host 22,确认服务在监听且网络可达。sudo tail -f /var/log/auth.log。二 服务端关键优化
/etc/ssh/sshd_config 设置 UseDNS no,避免登录时等待 PTR 查询。GSSAPIAuthentication no,减少 Kerberos/GSS 带来的额外往返。PubkeyAuthentication yes,关闭 PasswordAuthentication no,既提速又更安全。ClientAliveInterval 300、ClientAliveCountMax 2,减少异常断连与半开连接占用。MaxSessions 10、MaxStartups 10:30:60,抑制暴力尝试与资源耗尽。LoginGraceTime 30s,快速释放失败连接资源。Compression yes,在 CPU 紧张或高带宽场景建议关闭。sudo systemctl restart ssh(Ubuntu 服务名为 ssh)。上述参数对“登录慢、认证慢、卡顿”的改善最为直接。三 客户端与网络侧优化
~/.ssh/config 或 /etc/ssh/ssh_config 设置 GSSAPIAuthentication no,避免客户端侧等待。ServerAliveInterval 60,保持 NAT/防火墙会话存活。mosh 并使用 mosh user@host,对移动/跨公网场景显著改善“打字卡顿”。/etc/nsswitch.conf 将 hosts: 设为 files(或确保 /etc/hosts 有目标主机映射),减少慢 DNS 造成的阻塞。四 安全加固与性能兼得的推荐配置
PermitRootLogin no,降低攻击面。Port 2222(或其他高位端口),减少自动化扫描噪音。AllowUsers youruser 或 AllowGroups sshusers。MaxAuthTries 3,快速失败、释放资源。sudo ufw allow 2222/tcp 或 firewall-cmd --permanent --add-port=2222/tcp && firewall-cmd --reload。/var/log/auth.log,如 [sshd] enabled = true, maxretry = 3, bantime = 3600。sudo systemctl restart ssh。五 一键最小可用优化示例
/etc/ssh/sshd_config(按需合并到现有配置)UseDNS no
GSSAPIAuthentication no
PubkeyAuthentication yes
PasswordAuthentication no
ClientAliveInterval 300
ClientAliveCountMax 2
MaxSessions 10
MaxStartups 10:30:60
LoginGraceTime 30s
# 可选:Compression yes
# Port 2222
# PermitRootLogin no
# AllowUsers youruser
# MaxAuthTries 3
~/.ssh/configHost myserver
HostName your.server.ip
Port 22 # 若改了端口,请同步修改
User youruser
ServerAliveInterval 60
GSSAPIAuthentication no
sudo systemctl restart ssh
time ssh youruser@your.server.ip exit
ssh -v youruser@your.server.ip