[英]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.