如何使用 zstd 动态压缩进行 ssh?

如何使用 zstd 动态压缩进行 ssh?

我想设置 ssh 隧道来进行动态压缩,以便获得每一端可用的带宽和 CPU 资源的最大吞吐量。由于 gzip 压缩是内置的且不可插入,我想我可以使用-o ProxyCommand设置一个双 ssh 隧道,其中外部隧道将压缩数据作为内容发送,内部隧道连接到远程主机上的 ssh 守护进程。这几乎作品。这是我的命令:

# dynamic compression parameters to zstd omitted for brevity
ssh -o ProxyCommand='zstd | ssh -p %p %h "unzstd | nc localhost %p | zstd" | unzstd' <hostname>

以下是我对这个命令的一些了解:

  • 当我运行此命令时,终端挂起,没有任何输出。
  • 如果我删除 [un]zstd,它就可以工作,这并不奇怪,因为使用 netcat 作为代理命令是通过跳转主机连接的标准方法
  • cat | zstd | cat在命令提示符下不会立即返回数据,因为压缩程序以块的形式处理数据。在释放压缩数据之前,您必须使用 ctrl+da 发送 EOF 几次。您也可以解压缩管道内的数据,其工作原理相同。
  • 如果我在运行完整命令时按 ctrl+d,什么也不会发生。

我在这里缺少什么?有没有办法让这个工作或我忽略的另一种方式?

相关内容