首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何节流SSH连接带宽

如何节流SSH连接带宽
EN

Unix & Linux用户
提问于 2021-09-16 04:29:00
回答 2查看 3.8K关注 0票数 4

如何限制SSH连接的速度?例如,当我执行端口转发(ssh -L ...)、反向隧道(ssh -R ...)或SOCKS5动态端口转发(ssh -D ...)时,可能需要限制隧道的带宽。

EN

回答 2

Unix & Linux用户

发布于 2021-09-30 21:31:55

这可以使用作为原始TCP连接的替代方案的ProxyCommand来完成。您可以将ProxyCommand指定为ssh (/etc/ssh/ssh_config)的全局配置、私有配置(~/.ssh/config)或命令行中的ssh -o ProxyCommand=…

一个普通的ProxyCommandnc %h %p或等效的(使用ncncatsocat具有正确的语法,可以为您提供到SSH服务器的原始TCP连接)。要与服务器对话,您的ssh将写入此命令的stdin,并从stdout中读取。单独的nc %h %p几乎就像没有ProxyCommand的连接(当ssh在内部完成nc的工作时)。

诀窍是,您可以在nc %h %pssh之间,在两边插入过滤器。这样你就可以节流连接。假设您的ssh通过以下内容进行了讨论:

代码语言:javascript
复制
pv -qL 20K | nc %h %p | pv -qL 10K

ssh发送给服务器的内容受到第一个pv的限制;ssh从服务器接收的内容受到第二个pv的限制。

若要运行通过上述命令进行对话的ssh,请调用:

代码语言:javascript
复制
ssh -o ProxyCommand='pv -qL 20K | nc %h %p | pv -qL 10K' …

备注:

  • 使用这种方法,您可以限制整个SSH连接、通过它的所有东西、所有隧道、X11转发、其他会话(在连接共享的情况下)、所有东西。你切断了原始TCP连接。
  • 如果您使用ssh -N,那么您可能希望pvs不要安静,并且实际上报告隧道的吞吐量: ssh -o ProxyCommand='pv -cN out -L 20K nc %h %p _ pv -cN in -L 10K‘-ND 8080 user@server
  • 使用pv -R (除了调用),您可以更改正在运行的pv的设置,这样您可以随时调整节流阀。如果您想这样做,那么pv -PProxyCommand中将是有用的,可以判断什么PID属于什么pv。详情请参见man 1 pv
  • 如果您的配置已经使用了ProxyCommand,那么您需要与pvs一起接受现有的值(而不是nc %h %p);如果您的配置已经使用了ProxyJump,则需要将其转换为ProxyCommand,然后与pvs一起使用。
票数 9
EN

Unix & Linux用户

发布于 2021-09-16 08:18:11

一种选择是在路由器上的端口22上应用QoS。

滴滴一种轻型用户空间带宽整形器。它也可以是作为守护进程运行,在这个角色中,它可以一次管理多个会话。

另一种可能是使用类似于htb.init-script或ip地址_继电器的东西。

根据这一讨论的说法,您也可以使用iptable来限制数据包的流量,但这不是我的选择。我宁愿直接限制带宽。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/669232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档