如何限制SSH连接的速度?例如,当我执行端口转发(ssh -L ...)、反向隧道(ssh -R ...)或SOCKS5动态端口转发(ssh -D ...)时,可能需要限制隧道的带宽。
发布于 2021-09-30 21:31:55
这可以使用作为原始TCP连接的替代方案的ProxyCommand来完成。您可以将ProxyCommand指定为ssh (/etc/ssh/ssh_config)的全局配置、私有配置(~/.ssh/config)或命令行中的ssh -o ProxyCommand=…。
一个普通的ProxyCommand是nc %h %p或等效的(使用nc、ncat、socat具有正确的语法,可以为您提供到SSH服务器的原始TCP连接)。要与服务器对话,您的ssh将写入此命令的stdin,并从stdout中读取。单独的nc %h %p几乎就像没有ProxyCommand的连接(当ssh在内部完成nc的工作时)。
诀窍是,您可以在nc %h %p和ssh之间,在两边插入过滤器。这样你就可以节流连接。假设您的ssh通过以下内容进行了讨论:
pv -qL 20K | nc %h %p | pv -qL 10Kssh发送给服务器的内容受到第一个pv的限制;ssh从服务器接收的内容受到第二个pv的限制。
若要运行通过上述命令进行对话的ssh,请调用:
ssh -o ProxyCommand='pv -qL 20K | nc %h %p | pv -qL 10K' …备注:
ssh -N,那么您可能希望pvs不要安静,并且实际上报告隧道的吞吐量: ssh -o ProxyCommand='pv -cN out -L 20K nc %h %p _ pv -cN in -L 10K‘-ND 8080 user@serverpv -R (除了调用),您可以更改正在运行的pv的设置,这样您可以随时调整节流阀。如果您想这样做,那么pv -P在ProxyCommand中将是有用的,可以判断什么PID属于什么pv。详情请参见man 1 pv。ProxyCommand,那么您需要与pvs一起接受现有的值(而不是nc %h %p);如果您的配置已经使用了ProxyJump,则需要将其转换为ProxyCommand,然后与pvs一起使用。发布于 2021-09-16 08:18:11
一种选择是在路由器上的端口22上应用QoS。
滴滴是一种轻型用户空间带宽整形器。它也可以是作为守护进程运行,在这个角色中,它可以一次管理多个会话。
另一种可能是使用类似于htb.init-script或ip地址_继电器的东西。
根据这一讨论的说法,您也可以使用iptable来限制数据包的流量,但这不是我的选择。我宁愿直接限制带宽。
https://unix.stackexchange.com/questions/669232
复制相似问题