首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby net-ssh wirth代理命令导致冻结

Ruby net-ssh wirth代理命令导致冻结
EN

Stack Overflow用户
提问于 2013-10-16 18:22:25
回答 1查看 865关注 0票数 5

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

该方案如下所示:

本地->代理-> remote

我有这段代码,它正在做直接访问的工作:

代码语言:javascript
复制
require 'net/ssh'
Net::SSH.start(remote_host, remote_user) do |ssh|
    puts ssh.exec!'hostname'
end

但是,当我尝试使用代理时,命令'hostname‘被执行并正确,但随后代码冻结,这与我调用ssh.close的情况相同。

代码如下:

代码语言:javascript
复制
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中使用过它)

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

非常感谢您的关注,

编辑:这是日志中的最后一行,它阻塞在那里:

代码语言:javascript
复制
I, [2013-10-16T23:01:19.304778 #3785]  INFO -- net.ssh.connection.session[4555128]: closing remaining channels (0 open)
EN

回答 1

Stack Overflow用户

发布于 2014-06-30 18:40:09

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

调试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

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

https://stackoverflow.com/questions/19400903

复制
相关文章

相似问题

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