旧版本OpenSSH可能存在性能bug或未优化的传输逻辑,升级到最新版本可获得更好的传输效率。通过以下命令更新系统及OpenSSH:
sudo apt update && sudo apt upgrade openssh-server openssh-client -y
新版本通常会改进协议协商、加密算法效率等,间接提升传输速度。
密码认证需要多次握手验证,而密钥认证通过公私钥对验证,减少了认证时间。配置步骤:
ssh-keygen -t rsa -b 4096(默认保存到~/.ssh/id_rsa)。ssh-copy-id sftp_user@server_ip。/etc/ssh/sshd_config,禁用密码认证:PasswordAuthentication no。sudo systemctl restart sshd。修改/etc/ssh/sshd_config中的以下参数,提升并发处理能力:
MaxSessions 100:设置单个连接允许的最大会话数(默认10,可根据服务器负载调整)。MaxStartups 10:30:60:设置未认证连接的最大数量(10个立即允许,30个延迟处理,60个拒绝),避免过多未认证连接占用资源。Compression yes:启用传输压缩(对文本文件效果明显,二进制文件如视频可能增加CPU负担,需根据文件类型选择)。sudo systemctl restart sshd。/etc/sysctl.conf,添加以下参数调整TCP窗口大小,提升大数据量传输效率:net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304
应用配置:sudo sysctl -p。netstat -tulnp检查并停止无关服务(如FTP、Telnet),减少网络端口占用。/etc/fstab,为SFTP目录所在分区添加noatime,nodiratime选项(减少文件访问时间记录),例如:/dev/sda1 /sftp ext4 defaults,noatime,nodiratime 0 2
重启后生效。iostat -dx 1命令查看磁盘使用率,若%util接近100%,需升级硬件或优化文件存储结构(如分散文件到多个分区)。tar -czvf archive.tar.gz /path/to/small_files),减少传输次数和连接开销。/etc/security/limits.conf,为SFTP用户添加以下内容:sftp_user soft nofile 65535
sftp_user hard nofile 65535
避免大量并发连接时出现“Too many open files”错误。/etc/sysctl.conf,添加以下参数提升网络吞吐量:fs.file-max = 65536
net.core.somaxconn = 1024
net.ipv4.tcp_max_syn_backlog = 2048
应用配置:sudo sysctl -p。/etc/ssh/sshd_config中移除ChrootDirectory配置。/etc/ssh/sshd_config中设置:X11Forwarding no
AllowTcpForwarding no
减少不必要的进程占用系统资源。