繁体   English   中英

Ruby net-ssh wirth proxy命令导致冻结

[英]Ruby net-ssh wirth proxy command causes freeze

我想通过另一个使用ruby连接到远程计算机。

该方案如下:

本地 - >代理 - >远程

我有这个代码正在进行直接访问的工作:

require 'net/ssh'
Net::SSH.start(remote_host, remote_user) do |ssh|
    puts ssh.exec!'hostname'
end

但是,当我尝试使用代理时,命令'hostname'被执行并且正确,但是如果我调用ssh.close,代码就会冻结。

这是代码:

require 'net/ssh'
require 'net/ssh/proxy/command'

proxy_cmd = Net::SSH::Proxy::Command.new('ssh proxy_user@proxy_host nc %h %p')
Net::SSH.start(remote_host, remote_user, :proxy => proxy) do |ssh|
    puts ssh.exec!'hostname'
end

由于rsa密钥,登录是在没有密码的情况下完成的。 并且proxycommand正在工作(之前我在bash中使用它)

有人会知道我做错了什么吗?

非常感谢您的关注,

编辑:这是日志中的最后一行,它阻止:

I, [2013-10-16T23:01:19.304778 #3785]  INFO -- net.ssh.connection.session[4555128]: closing remaining channels (0 open)

我刚刚遇到了同样的问题 - 命令行ssh工作正常,net / ssh在使用proxycommand时挂在我身上。

debuging net / ssh带我到: https//github.com/net-ssh/net-ssh/blob/master/lib/net/ssh/transport/session.rb#L113 ,整个事情都挂在了套接字的.close调用。

我不确定是什么导致这种情况,但是向nc命令添加超时似乎已经解决了它:

ProxyCommand ssh proxy_server@proxy_server nc -q 1 %h %p

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM