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

Proxy capistrano通过代理部署到没有公共IP的服务器,proxy,capistrano,web-deployment,Proxy,Capistrano,Web Deployment,我需要部署到的服务器位于专用网络中(没有公共IP)。我可以通过VPN从网络外部访问服务器,但很困难,每次使用capistrano部署都会中断 我可以访问该专用网络中另一台具有公共IP的计算机 是否可以设置capistrano部署脚本,以便部署通过该“代理”服务器 除了解决VPN的问题之外,你能为我的情况提出一些其他的解决方案吗?VPN是我无法控制的 我想到了在服务器上设置一个github钩子,该钩子将触发一个脚本,然后将分支拉到服务器上,但这比capistrano所做的要少得多:没有迁移、修订、

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

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

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

除了解决VPN的问题之外,你能为我的情况提出一些其他的解决方案吗?VPN是我无法控制的


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

Capistrano通过SSH与目标服务器通信-如果您通过“”服务器设置到代理的SSH连接,并在适当的最终主机上登录,则Capistrano通过该连接将执行相同的操作

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

具体配置方式取决于您如何设置网络

这里有一个(为主机名编辑的).ssh/config文件,我刚刚创建了一个用于ssh的文件:home via public,然后是final:

然后我可以通过
内部ssh,登陆名为final.hostname.com的机器,但我通过public-server.com(首先以我自己的身份登录,然后以“secretdeployuser”的身份登录final。public和final都允许使用我常用的id_rsa密钥登录,标准转发允许我登录到这两个站点,甚至可以通过彼此登录

当您能够通过ssh从命令行进入最终位置时,您可以将
internalvia
作为主机放入Capistrano设置中

role :app, %w{ secretdeployuser@internalvia }

这太棒了!谢谢,我现在就试试。它比我正在考虑的其他解决方案要简单得多,比如让卡皮斯特拉诺站在“堡垒”上然后从那里进行部署,或者从专用服务器本身启动部署。通过密钥转发,从本地计算机实际运行部署可能更安全-这避免了在远程主机上使用私钥。回答得很好。如果您将EC2与SSHKeys一起使用,您可能已经为bastion服务器设置了主机配置。您可以将public-server.com地址与SSH配置主机名一起删除。如果要将凭据转发到执行GIT操作或SSH到专用网络中的另一台服务器,还可以在两个主机配置中都包含
ForwardAgent yes
role :app, %w{ secretdeployuser@internalvia }