温馨提示×

怎样优化CentOS SSH的连接速度

小樊
41
2025-09-19 23:34:50
栏目: 智能运维

优化CentOS SSH连接速度的方法

1. 关闭DNS反向解析

SSH默认会尝试对客户端IP进行DNS反向解析,若DNS服务器无对应记录,会等待超时报错,显著增加连接延迟。通过修改SSH服务端配置文件/etc/ssh/sshd_config,将UseDNS参数设置为no,可跳过此步骤。修改后需重启SSH服务使配置生效:

vim /etc/ssh/sshd_config
# 找到UseDNS行,修改为
UseDNS no
systemctl restart sshd

2. 禁用GSSAPI认证

GSSAPI(通用安全服务API)主要用于图形界面认证,开启后会额外进行身份验证流程,拖慢连接速度。在/etc/ssh/sshd_config中设置GSSAPIAuthentication no,禁用该功能:

vim /etc/ssh/sshd_config
# 找到GSSAPIAuthentication行,修改为
GSSAPIAuthentication no
systemctl restart sshd

3. 启用SSH压缩

通过压缩传输数据可减少网络传输量,提升速度。在/etc/ssh/sshd_config中启用压缩并设置压缩级别(1-9,级别越高压缩率越高,但CPU消耗越大,推荐6):

vim /etc/ssh/sshd_config
# 添加或修改以下行
Compression yes
CompressLevel 6
systemctl restart sshd

4. 优化SSH配置参数

  • 调整TCP保持活跃设置:通过ClientAliveInterval(服务器向客户端发送空闲数据包的时间间隔,单位:秒)和ClientAliveCountMax(允许的最大无响应次数)参数,保持连接活跃,避免因超时重连。例如,设置5分钟无活动断开连接:
    vim /etc/ssh/sshd_config
    ClientAliveInterval 300
    ClientAliveCountMax 0  # 0表示1次无响应即断开
    systemctl restart sshd
    
  • 修改默认端口:将SSH默认端口22改为非标准端口(如2222),减少端口扫描攻击,降低连接时的安全检测开销。修改/etc/ssh/sshd_config中的Port参数:
    vim /etc/ssh/sshd_config
    Port 2222
    systemctl restart sshd
    # 注意:修改端口后需同步更新防火墙规则(如firewalld或iptables)
    

5. 调整内核网络参数

通过优化内核参数提升网络传输效率。编辑/etc/sysctl.conf文件,添加或修改以下参数:

vim /etc/sysctl.conf
# 增加TCP最大接收缓冲区大小
net.core.rmem_max = 16777216
# 增加TCP最大发送缓冲区大小
net.core.wmem_max = 16777216
# 启用TCP窗口缩放(提升大数据量传输效率)
net.ipv4.tcp_window_scaling = 1
# 减少TIME_WAIT状态的连接数(提升端口复用率)
net.ipv4.tcp_max_tw_buckets = 6000
sysctl -p  # 使参数生效

6. 使用SSH密钥对认证

密码认证需进行多次加密握手,速度较慢且安全性较低。使用SSH密钥对(公钥+私钥)认证,可跳过密码验证步骤,大幅提升连接速度。步骤如下:

  • 生成密钥对(本地机器):
    ssh-keygen -t ed25519  # 推荐使用Ed25519算法(安全性高、速度快)
    
  • 将公钥上传至服务器:
    ssh-copy-id user@server_ip -p port  # 替换为实际用户名、服务器IP和端口
    
  • 连接时直接使用密钥:
    ssh -i ~/.ssh/id_ed25519 user@server_ip -p port
    

7. 启用SSH多路复用

多路复用允许同一连接复用多个会话,避免每次连接都重新建立TCP三次握手和SSH认证,大幅减少连接时间。在客户端配置文件~/.ssh/config中添加以下设置:

vim ~/.ssh/config
Host *
    ControlMaster auto  # 自动复用连接
    ControlPath ~/.ssh/control-%r@%h:%p  # 控制通道路径
    ControlPersist 1h  # 连接保持1小时(可调整)

保存后,首次连接时会建立主连接,后续连接会自动复用该连接。

8. 升级OpenSSH版本

旧版本OpenSSH可能存在性能bug或未优化的代码,升级到最新稳定版本可获得性能提升和安全修复。在CentOS中,可通过EPEL仓库安装最新版:

yum install epel-release -y
yum update openssh-server openssh-clients -y
systemctl restart sshd

9. 使用SSH加速工具

对于高延迟或不稳定的网络环境,可使用SSH加速工具(如ssh-speedup)优化传输效率。安装及使用示例:

yum install ssh-speedup -y  # CentOS 7(需EPEL仓库)
ssh-speedup user@server_ip -p port

10. 限制并发连接数

过多并发连接会消耗服务器资源,导致单个连接速度下降。通过MaxStartups参数限制同时启动的并发连接数(如允许最多10个并发连接,超过的连接排队等待):

vim /etc/ssh/sshd_config
MaxStartups 10:30:60  # 前10个连接直接允许,11-30个连接延迟30%,超过30个拒绝
systemctl restart sshd

以上方法可根据实际场景组合使用(如关闭DNS反查+禁用GSSAPI+启用压缩+多路复用),在保证安全性的前提下最大化提升SSH连接速度。修改配置前建议备份原文件,避免误操作导致服务异常。

0