Самый простой способ - это настроить сервер Jump-host, который может достичь целевых серверов, а затем подключиться к целевому серверу, разрешив серверу Jump-host прокси-соединение через ваше соединение.
SSH делает его тривиальнымпросто:
ssh -J user @ jump-host myuser @ target-host
В вашем .ssh / config вы можете сделать следующее:
### First jump-host. Directly reachable
Host jump-host
HostName jum-phost.example.org
### Host to jump to via jump-host.example.org
Host target-host
HostName target-host.example.org
ProxyJump jump-host
Это будетпозволяет вам использовать net-ssh как обычно.Если вы не хотите изменять конфигурационный файл, вам придется использовать 'net/ssh/proxy/jump'
:
require 'net/ssh/proxy/jump'
proxy = Net::SSH::Proxy::Jump.new('user@proxy')
Net::SSH.start('host', 'user', :proxy => proxy) do |ssh|
...
end
См. Эту статью для получения дополнительной информации о Jump Hosts.