我正在尝试将我的 capistrano v2 脚本迁移到新的 v3.4 版本。
开发阶段一切顺利:我有一个 EC2 实例,部署完成没有错误。
我的生产脚本遇到了一些问题,因为我在生产服务器(EC2 实例)之前有一个代理(EC2 实例);在我的 capistrano v2 脚本中一切正常,现在我使用 cap-ec2 + capistrano v3.4 将我的应用程序仅部署到标记的服务器,但是当我尝试它时,我得到“Permission Denied”,我的生产服务器拒绝我的密钥。
也许我在脚本中设置了代理参数有问题,你能帮帮我吗?
非常感谢!!
在这里您可以找到代理参数:
CAPISTRANO V2(工作)
set :gateway, "deploy@xxx.xxx.xxx.xxx"
set :ssh_options, { :forward_agent => true }
default_run_options[:pty] = true
ssh_options[:port] = "22"
ssh_options[:keys] = [File.join(ENV["HOME"], ".ssh", "id_rsa_deploy_myapp")]
CAPISTRANO V3(不工作)
require 'net/ssh/proxy/command'
set :ssh_options, {
user: "deploy",
keys: %w("~/.ssh/id_rsa_deploy_myapp"),
auth_methods: %w(publickey),
forward_agent: true,
port: 22,
proxy: Net::SSH::Proxy::Command.new('ssh xxx.xxx.xxx.xxx -W %h:%p')
}