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

bos*_*vic 2 proxy capistrano web-deployment

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

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

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

你可以为我的情况建议一些其他的解决方案,然后解决vpn的问题,这是我手中的问题.

在我看来,设置一个github钩子可以触发服务器上的一个脚本然后拉动分支,但这比capistrano的做法要少得多:没有迁移,修订,捆绑更新,服务器重启等等......

Ali*_*man 11

Capistrano通过SSH与目标服务器通信 - 如果您通过" 堡垒 "服务器设置SSH代理连接并登陆相应的最终主机,那么Capistrano - 通过该连接 - 将执行相同的操作.

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

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

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

Host internalvia
    HostName final.hostname.com
    User secretdeployuser
    IdentityFile ~/.ssh/id_rsa
    ProxyCommand ssh public-server.com -W %h:%p
Run Code Online (Sandbox Code Playgroud)

我可以ssh internalvia,然后降落在名为final.hostname.com的机器上,但我通过public-server.com(首先登录,作为我自己,最后登录为'secretdeployuser'.公共和最终都有我平时id_rsa密钥允许登录,标准转发允许我登录到两者,甚至互相登录.

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

role :app, %w{ secretdeployuser@internalvia }
Run Code Online (Sandbox Code Playgroud)

  • 通过密钥转发,从本地计算机实际运行部署可能会更安全 - 这可以避免在远程主机上拥有私钥。 (2认同)