Linux SFTP如何提高传输速度
导读:1. 优化网络连接质量 确保服务器与客户端之间采用高速有线网络(如千兆以太网),避免无线连接(如Wi-Fi)的信号衰减或干扰;若传输距离较远,可使用**CDN(内容分发网络)**减少物理距离带来的延迟;定期用iftop、nload等工具监控...
1. 优化网络连接质量
确保服务器与客户端之间采用高速有线网络(如千兆以太网),避免无线连接(如Wi-Fi)的信号衰减或干扰;若传输距离较远,可使用**CDN(内容分发网络)**减少物理距离带来的延迟;定期用iftop
、nload
等工具监控网络流量,识别并排除拥堵节点。
2. 调整TCP/IP参数优化传输效率
修改服务器的/etc/sysctl.conf
文件,优化以下关键参数以提升TCP吞吐量和响应速度:
- 增大TCP接收/发送缓冲区:
net.core.rmem_max=16777216
、net.core.wmem_max=16777216
; - 动态调整TCP窗口大小:
net.ipv4.tcp_rmem="4096 87380 16777216"
、net.ipv4.tcp_wmem="4096 65536 16777216"
; - 启用拥塞控制算法(如Cubic):
net.ipv4.tcp_congestion_control=cubic
; - 开启窗口缩放和时间戳:
net.ipv4.tcp_window_scaling=1
、net.ipv4.tcp_sack=1
; - 增加SYN队列和连接队列长度:
net.core.netdev_max_backlog=20000
、net.core.somaxconn=20000
、net.ipv4.tcp_max_syn_backlog=20000
; - 扩展本地端口范围:
net.ipv4.ip_local_port_range=1024 65535
。
修改后执行sudo sysctl -p
使配置生效。
3. 配置SSH/SFTP服务器参数
编辑/etc/ssh/sshd_config
文件,调整以下参数以提升SFTP性能:
- 启用内部SFTP子系统:确保
Subsystem sftp /usr/lib/openssh/sftp-server
(或对应路径)未被注释; - 优化并发连接:设置
MaxSessions 10
(最大并发会话数)、MaxStartups 10:30:60
(并发连接数达到上限时的处理策略,如允许10个立即连接、30个延迟连接、最多60个); - 保持连接活跃:添加
TCPKeepAlive yes
防止因空闲连接超时断开; - 限制用户/组权限:用
Match group sftpmatch
限制特定用户组的访问,减少不必要的资源占用; - 禁用Shell登录:添加
ForceCommand internal-sftp
强制用户仅能使用SFTP,提升安全性。
修改后重启SSH服务:sudo systemctl restart sshd
。
4. 启用压缩减少数据传输量
在客户端传输时添加-C
选项启用SSH压缩(如sftp -C user@host
),或在/etc/ssh/sshd_config
中设置Compression yes
(需重启SSH服务);对于文本文件(如日志、代码),压缩效果更明显(可减少50%以上的传输量)。
5. 使用多线程/并行传输工具
对于大量小文件(如图片、文档),使用支持多线程的工具提升并发传输能力:
- rsync:
rsync -av --bwlimit=10000 -e "ssh -C" /source/ user@host:/destination/
(-a
归档模式、-v
显示进度、--bwlimit
限制带宽、-C
启用压缩); - lftp:
lftp -e "set ftp:parallel-transfer-count 4; mirror --parallel=4 /source/ /destination/; quit"
(parallel-transfer-count
设置并行传输数); - FileZilla:在客户端设置中开启“多线程传输”(通常支持2-8个线程)。
6. 优化磁盘I/O性能
- 使用SSD替代HDD:SSD的随机读写速度远高于HDD(可达10倍以上),能显著提升文件读写效率;
- 优化磁盘调度算法:对于机械硬盘,可修改调度算法为
deadline
(echo deadline | sudo tee /sys/block/sda/queue/scheduler
);对于SSD,使用noop
(echo noop | sudo tee /sys/block/sda/queue/scheduler
)减少调度开销; - 定期清理磁盘空间:确保磁盘剩余空间充足(建议至少保留20%),避免因磁盘满导致写入延迟。
7. 客户端配置优化
- 调整客户端配置文件:在客户端的
~/.ssh/config
中添加以下参数,保持连接稳定并减少重连次数:Host * Compression yes ServerAliveInterval 60 ServerAliveCountMax 3
- 切换二进制传输模式:在SFTP客户端中执行
binary
命令,避免文本模式下的换行符转换(如Windows与Linux的\r\n
与\n
转换),提升二进制文件(如图片、视频)的传输效率。
8. 使用SSH密钥认证替代密码认证
生成SSH密钥对(ssh-keygen -t rsa -b 4096
),将公钥(id_rsa.pub
)复制到服务器的~/.ssh/authorized_keys
文件中;密钥认证无需每次传输都进行密码验证,减少了加密/解密的开销,提升了连接速度。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux SFTP如何提高传输速度
本文地址: https://pptw.com/jishu/733659.html