Ruby Net:SSH控制大师?

我目前有一个Ruby(Rails)应用程序,需要进行大量的短SSH连接。 这可以使用Ruby Net :: SSH库正常工作,除了应用程序每次我想要发出命令时都必须登录并协商密钥,这太慢了。

有没有办法用Ruby Net :: SSH启用Control Master? 在命令行测试中,这使得登录(在第一个之后)非常快,因为连接已经打开(密钥被协商等)。

如果Net :: SSH无法做到这一点,那么有人可以建议一个可以做到的替代库吗?

我想这必须是一个共同的要求,所以希望有人可以提供帮助。

谢谢!

为什么不保持连接打开? ssh调用是虚拟的,因为我不知道api但是它的用途是:

def ssh_execute(user, command) Thread.current[:user_connections] ||= {} unless Thread.current[:user_connections][user.id] Thread.current[:user_connections][user.id] = Net::SSH.connect(...) end ssh = Thread.current[:user_connections][user.id] ssh.run_command(command) end 

每个线程将获得一个ssh连接,或者如果您的应用程序与乘客一起部署,则每个进程将具有一个连接并将重用它。

这是你想要的吗?

您可以准确指定所需的加密协议类型以最小化握手,但是,如果您需要扩展它,SSH可能会有点慢。

一个非常有趣的想法是http://saltstack.org/它已经在0mq之上实现了它自己的“ssh”替代方案,使得在多个服务器上运行并行命令超级快,显然没有ssh的相同问题相关的性能问题,如厨师等。也许你可以建立在盐上做这个吗?