1. 关闭SSH反向DNS解析(最常见有效)
Ubuntu SSH登录慢的主要原因之一是服务器默认开启DNS反向解析:当客户端连接时,服务器会查询客户端IP对应的域名(PTR记录),若无记录则等待超时报错,导致登录延迟。
操作步骤:
sudo nano /etc/ssh/sshd_configUseDNS参数(若被注释则取消注释),将其值改为no:UseDNS nosudo systemctl restart sshd2. 禁用GSSAPI认证
GSSAPI(通用安全服务接口)用于身份验证,但在多数普通场景(如个人或小型服务器)中无需使用,其握手过程会增加登录延迟。
操作步骤:
sudo nano /etc/ssh/sshd_configGSSAPIAuthentication参数,将其值改为no:GSSAPIAuthentication nosudo systemctl restart sshd~/.ssh/config或/etc/ssh/ssh_config),添加GSSAPIAuthentication no。3. 优化SSH配置文件(可选增强)
通过调整SSH配置,可进一步提升连接稳定性与速度:
nsswitch.conf文件:编辑/etc/nsswitch.conf,将hosts行改为hosts: files dns [NOTFOUND=return],优先通过本地/etc/hosts文件解析,避免DNS查询超时。/etc/ssh/sshd_config中添加TcpWindowSize 32768(增大TCP接收缓冲区),提升数据吞吐量。/etc/pam.d/sshd,注释掉pam_motd.so相关行(如session optional pam_motd.so),避免登录时加载动态信息延迟。4. 使用更快的加密算法
默认的SSH加密算法(如AES-CBC)可能存在性能瓶颈,更换为更高效的算法可减少加密/解密时间:
~/.ssh/config),添加以下内容:Host *
Ciphers aes128-ctr,aes192-ctr,aes256-ctr # 使用快速对称加密算法
KexAlgorithms curve25519-sha256,ecdh-sha2-nistp256 # 使用高效密钥交换算法
保存后,客户端连接时会自动使用这些算法。5. 启用SSH保持连接(避免频繁重连)
若网络不稳定,SSH连接可能因超时断开,重新连接需重新认证,增加延迟。可通过以下设置保持连接:
~/.ssh/config),添加:Host *
ServerAliveInterval 30 # 每30秒发送一次心跳包
ServerAliveCountMax 3 # 连续3次无响应则断开连接
TCPKeepAlive yes # 启用TCP保持活动状态
此设置可维持连接活跃,避免频繁重连。6. 使用SSH密钥认证替代密码认证
密码认证需进行多次加密/解密操作,而密钥认证仅需验证公钥,速度更快且更安全:
ssh-keygen -t ed25519(推荐Ed25519算法,性能优于RSA)ssh-copy-id user@remote_host/etc/ssh/sshd_config,禁用密码认证:PasswordAuthentication nosudo systemctl restart sshd7. 考虑使用Mosh替代SSH(极端网络环境)
若网络波动大(如移动网络、卫星网络),SSH的TCP协议可能导致连接卡顿,Mosh(Mobile Shell)是基于UDP的替代工具,能自动适应网络变化:
sudo apt install moshmosh user@remote_host