如何使用Ruby进行动态端口转发?

问题描述 投票:0回答:1

请告诉我,在Ruby上运行SSH动态端口转发的方式是什么?

我曾尝试使用诸如“ net / ssh / socks”“ net / ssh / gateway”之类的宝石,但由于我什至不需要它们,它们似乎已经过时了。

我要做的就是运行此shell命令ssh -N -D 5555 user@host并接收此过程的PID。

我也尝试使用Kernel#systemKernel#spawn

示例:

pid = spawn("ssh -N -D 5555 user@host") Process.wait pid 这对我来说很好,但是有一个问题,PID总是比开始的进程的实际PID少3个单位返回。 F.e.倒数PID为1555,实际PID为1558

所以这是另一个问题,为什么PID的差异始终为3,并且还会有另一个差异吗?我可以可靠地使用pid + 3吗?

ruby linux ssh proxy socks
1个回答
0
投票

如果您在没有-N的情况下生成,则可能会失去对自己终端的控制权,因为SSH会尝试运行远程Shell会话并将该会话的stdin / out连接到终端。

我无法重现PID问题(并且我认为它与缺少-N有关,但这应该是您想要的,并且可能还会解决您的PID问题:

pid = spawn("ssh -N -D 5555 user@host")

-N不要执行远程命令。这对于仅转发端口很有用。

© www.soinside.com 2019 - 2024. All rights reserved.