Capistrano, межсетевые экраны и туннель

Мы'Мы используем Capistrano для автоматизации отправки новых версий PHP-приложений на рабочий сервер. Производственный сервер (мыбудем называть это производством) публично, в то время как наш сервер хранилища (мыназовем это репо) сидит за нашим корпоративным брандмауэром вместе с нашими собственными машинами.

Capistrano, настроенный по умолчанию, выигралне работает, так как производство не можетне говорить с репо.

Мне было интересно, смогу ли я когда-нибудь настроить capistrano на SSH для репо, а затем SSH на производство, открыв туннель через порт, который я затем смогу использовать для SSH с производства обратно на репо, чтобы получить изменения из SCM.

Я просто могуНе могу понять, как это настроить или найти лучшее решение. Идеи?

Изменить: Я

мы пробовали это:

role :web, "deploy.com"

namespace :deploy do
    task :remote_tunnel do
        run 'Creating SSH tunnel...' do |channel, stream, data|
            ssh = channel.connection
            ssh.forward.remote(22, 'server.com', 10000, '127.0.0.1')
            ssh.loop {!ssh.forward.active_remotes.include?([10000, '127.0.0.1'])}
        end
    end
end

before "deploy:update_code", "deploy:remote_tunnel"

Но я продолжаю получать эту ошибку:

failed: "sh -c 'Creating SSH tunnel...'" on deploy.com

Ответы на вопрос(2)

Ваш ответ на вопрос