温馨提示×

linux sftp能限速吗

小樊
37
2026-09-08 01:15:16
栏目: 智能运维

可以,SFTP 本身(OpenSSH 的 sftp-server)是支持限速的,但不是在 sftp 客户端命令里直接设,而是在 SSH / sshd 服务端 层面控制。

下面按常见场景说明。


一、服务端全局限速(最常用)

sshd 服务端配置 中可以使用:

# /etc/ssh/sshd_config
Match User sftpuser
    ForceCommand internal-sftp
    ChrootDirectory /data/sftp
    # 限速(字节/秒)
    # 100KB/s = 102400
    MaxBandwidth 102400

说明:

  • MaxBandwidthOpenSSH 8.0+ 支持
  • 单位:字节/秒(bytes/s)
  • 所有通过该 SSH 连接的流量生效(包括 SFTP)
  • 需要重启 sshd:
    systemctl restart sshd
    

⚠️ 注意:

  • MaxBandwidth每个连接
  • 多个连接会叠加

二、针对用户 / 组限速

Match Group sftp
    ForceCommand internal-sftp
    MaxBandwidth 512000

Match User alice
    MaxBandwidth 204800

三、客户端临时限速(不完美)

1. 使用 scp(不是 sftp)

scp -l 800 file user@host:/path
  • -l 单位是 Kbit/s
  • 800 = 100KB/s

⚠️ 这是 scp,不是 sftp


2. sftp 客户端本身

普通 sftp 命令不直接支持限速
但你可以:

  • pv 限速后再传:
    pv -L 1m file | sftp user@host
    
  • 或用 rsync + ssh:
    rsync -avz --bwlimit=1000 file user@host:/path
    
    (单位是 KB/s)

四、系统级限速(更底层)

如果用 SFTP 只是传输手段,也可以在:

  • tc(traffic control)
  • iptables + limit
  • cgroup + 网络限制

但一般 不推荐,复杂度高。


五、总结

能限速
推荐方式sshd_configMaxBandwidth
❌ sftp 命令本身没有限速参数


如果你愿意,可以告诉我:

  • Linux 发行版(CentOS / Ubuntu)
  • OpenSSH 版本
  • 单用户还是所有用户
  • 想限制 上传 / 下载 / 双向

我可以给你一份可直接用的配置。

0