CentOS SFTP传输速度优化方法
修改/etc/ssh/sshd_config文件,将Subsystem配置为内部SFTP服务(internal-sftp),避免调用外部sftp-server进程的开销。例如:
Subsystem sftp internal-sftp
Match Group sftpusers # 限制特定用户组
ChrootDirectory %h # 启用chroot限制用户访问目录
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
此配置能减少进程间通信消耗,提升传输效率。
在sshd_config中为SFTP子系统添加压缩参数(-l COMPRESS),减少数据传输量。例如:
Subsystem sftp /usr/lib/openssh/sftp-server -l COMPRESS
压缩适用于文本、日志等可压缩文件,能显著降低网络负载(但对已压缩文件如ZIP、MP4效果有限)。
MaxSessions(单用户最大并发会话数,默认10)和MaxStartups(未认证连接数上限,默认10)参数,避免过多连接占用服务器资源。例如:MaxSessions 50
MaxStartups 50:30:100 # 允许最多50个并发连接,超过30个时随机拒绝30%的新连接
ClientAliveInterval(服务器向客户端发送心跳的时间间隔,默认0,即不发送)和ClientAliveCountMax(心跳超时次数,默认3)参数,及时清理闲置连接。例如:ClientAliveInterval 60 # 每60秒发送一次心跳
ClientAliveCountMax 3 # 3次心跳无响应则断开连接
这些设置能释放闲置资源,提升有效连接的传输效率。
aes128-ctr、chacha20-poly1305@openssh.com),在sshd_config中添加:Ciphers aes128-ctr,chacha20-poly1305@openssh.com
避免使用慢算法(如3des),平衡安全性与速度。GSSAPIBufferSize(GSSAPI认证缓冲区,默认16384)和RekeyLimit(密钥重协商数据量上限,默认1G),减少密钥重协商次数。例如:GSSAPIBufferSize 32768
RekeyLimit 2G
这些参数能降低加密操作的频率,提升传输效率。确保服务器与客户端之间的网络带宽充足(如使用千兆以太网、光纤),避免带宽成为传输瓶颈。可通过iperf3工具测试实际带宽。
ping、mtr工具检测延迟和丢包率,及时联系ISP解决网络问题。推荐使用ext4(稳定)或XFS(高性能,适合大文件传输)文件系统。例如,格式化磁盘为XFS:
mkfs.xfs /dev/sdb1
mount /dev/sdb1 /data -o defaults,noatime,nodiratime
在/etc/fstab中为文件系统添加noatime(不更新文件访问时间)和nodiratime(不更新目录访问时间)选项,减少不必要的磁盘I/O操作。例如:
/dev/sdb1 /data xfs defaults,noatime,nodiratime 0 0
修改后执行mount -o remount /data使设置生效。
tar -czvf files.tar.gz *.txt),再传输压缩包,减少传输次数和连接开销;lftp、FileZilla),开启多个并发连接同时传输文件。例如,lftp使用-e "set ftp:parallel-transfer-count 4;"命令开启4个并发连接。禁用密码认证(PasswordAuthentication no),使用SSH密钥对(PubkeyAuthentication yes)登录,避免每次传输时的密码验证过程,提升认证速度和安全性。
定期运行sudo yum update -y更新CentOS系统和OpenSSH等软件包,获取性能改进和安全修复。
编辑/etc/sysctl.conf文件,优化TCP性能参数:
net.ipv4.ip_local_port_range = 1024 65535 # 扩大本地端口范围
net.core.somaxconn = 1024 # 增加SYN队列长度
net.core.netdev_max_backlog = 1024 # 增加设备队列长度
net.ipv4.tcp_max_syn_backlog = 1024 # 增加SYN半连接队列长度
net.ipv4.tcp_syncookies = 1 # 开启SYN Cookie防止SYN Flood
应用更改:sudo sysctl -p。
使用htop(监控CPU/内存)、vmstat(监控系统资源)、iostat(监控磁盘I/O)等工具定期检查服务器性能,定位瓶颈;开启SSH详细日志(LogLevel VERBOSE),分析登录和传输过程中的问题。