Я хотел бы подключиться к удаленному компьютеру через другой, используя ruby.
Эта схема следующая:
Локальный -> прокси -> удаленный
У меня есть этот код, который выполняет работу для прямого доступа:
require 'net/ssh'
Net::SSH.start(remote_host, remote_user) do |ssh|
puts ssh.exec!'hostname'
end
Однако, когда я пытаюсь использовать прокси, команда «имя хоста» выполняется и корректна, но затем код зависает, то же самое, если я вызываю 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. И прокси-команда работает (раньше я использовал ее в bash)
Кто-нибудь знает, что я делаю неправильно?
Большое спасибо за ваш интерес,
РЕДАКТИРОВАТЬ: вот последняя строка в журналах, она там блокируется:
I, [2013-10-16T23:01:19.304778 #3785] INFO -- net.ssh.connection.session[4555128]: closing remaining channels (0 open)