capistrano通过代理部署到没有公共IP的服务器

时间:2015-01-31 11:51:09

标签: proxy capistrano web-deployment

我需要部署的服务器位于专用网络中(没有公共IP)。我可以通过VPN从网络外部访问服务器,但是遇到困难,并且每次都会使用capistrano进行部署。

我可以访问具有公共IP的私有网络中的另一台计算机。

是否可以设置capistrano部署脚本,以便部署通过"代理"服务器

你能否为我的情况提出一些其他的解决方案,然后解决vpn的问题,这是我手中的问题。

设置一个github挂钩,它会触发服务器上的一个脚本然后拉动分支,我想到了,但这比capistrano做的要少得多:没有迁移,修订,捆绑更新,服务器重启等。 ..

1 个答案:

答案 0 :(得分:11)

Capistrano通过SSH与目标服务器通信 - 如果您通过“bastion”服务器建立SSH代理连接并登陆相应的最终主机,那么Capistrano将通过该连接进行通信同样的。

设置此方法的最简单方法之一是使用〜/ .ssh / config块,描述您想要结束的位置,以及能够访问它的代理。

究竟如何配置,取决于您如何设置网络。

这是一个(为主机名编辑).ssh / config文件我刚从SSH创建到: home 通过 public 然后再到 final < / EM>:

Host internalvia
    HostName final.hostname.com
    User secretdeployuser
    IdentityFile ~/.ssh/id_rsa
    ProxyCommand ssh public-server.com -W %h:%p

然后我可以ssh internalvia,登陆名为final.hostname.com的机器,但是我通过了public-server.com(首先登录,我自己,最后登录为'secretdeployuser') public和final都允许我通常的id_rsa密钥登录,标准转发允许我登录到两者,甚至互相登录。

如果这对您来说可以从命令行进入最终位置,则可以将internalvia作为主机置于Capistrano设置中。

role :app, %w{ secretdeployuser@internalvia }