簡體   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