CentOS上SFTP配置优化指南
修改/etc/ssh/sshd_config文件,通过以下参数提升SFTP性能与安全性:
sftp-server为internal-sftp,减少进程创建开销。示例如下:Subsystem sftp internal-sftp
Match指令针对特定用户/组设置约束,强制使用internal-sftp并启用Chroot Jail(限制用户只能访问其主目录)。例如限制sftpusers组的用户:Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
修改完成后,重启SSH服务使配置生效:
sudo systemctl restart sshd
调整/etc/sysctl.conf中的网络参数,提升并发连接处理能力:
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 # 增加TCP SYN队列大小
net.ipv4.tcp_syncookies = 1 # 开启SYN Cookie防护
应用配置:
sudo sysctl -p
确保服务器网络带宽满足业务需求(如100Mbps、1Gbps等),避免带宽成为传输瓶颈。可通过ping测试网络稳定性,联系运营商升级带宽。
选择高质量网络服务提供商(如电信、联通),优化路由设置(如使用CDN或专线),降低数据传输延迟和丢包率。
推荐使用ext4(稳定)或XFS(高并发)文件系统。安装系统时选择对应文件系统,或通过mkfs命令转换(需备份数据)。
编辑/etc/fstab文件,为文件系统添加noatime(不更新文件访问时间)和nodiratime(不更新目录访问时间)选项,减少磁盘I/O操作。示例如下:
/dev/sda1 / ext4 defaults,noatime,nodiratime 0 0
修改后重新挂载:
sudo mount -o remount /
将多个小文件打包成压缩文件(如.tar.gz),一次性传输,减少连接次数和握手开销。
通过SFTP客户端(如FileZilla、WinSCP)开启多线程/多进程传输,同时传输多个文件,提高整体传输效率。
生成密钥对(ssh-keygen),将公钥上传至服务器~/.ssh/authorized_keys文件,替代密码认证,提升认证速度和安全性。
通过sshd_config文件控制并发连接,避免服务器过载:
MaxSessions 100 # 最大允许100个并发会话
MaxSessionsPerUser 5 # 单个用户最多5个并发会话
修改后重启SSH服务:
sudo systemctl restart sshd
通过tc(流量控制)工具限制SFTP带宽,避免单个用户占用过多带宽:
sudo yum install iproute
sftpuser带宽为1Mbps为例):# 添加HTB队列
sudo tc qdisc add dev eth0 root handle 1: htb default 30
# 创建父类(总带宽1Mbps)
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
# 创建子类(用户带宽512Kbps)
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 512kbit ceil 1mbit
# 标记SFTP流量(端口22)
sudo iptables -A OUTPUT -t mangle -p tcp --dport 22 -m owner --uid-owner $(id -u sftpuser) -j MARK --set-mark 10
# 将标记流量绑定到子类
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 10 fw flowid 1:10
/etc/rc.local文件,设置开机自动执行。