【问题标题】:Capistrano: Deploy using git server and sshCapistrano:使用 git 服务器和 ssh 进行部署
【发布时间】:2013-10-07 23:04:06
【问题描述】:

我有一个 Capistrano 脚本,可以将一些 rails 代码部署到 ubuntu 机器上。我的 git repo 不在 github 上,而是在我们公司的服务器上。我已经像这样配置 capistrano...

set :repository, "ssh://non-root-user@mydomain.com/opt/git/hub/app.git"

当我使用复制功能进行部署时...

设置:deploy_via, :copy

它可以正常工作。但是当我使用远程缓存进行部署时...

set :deploy_via, :remote_cache

失败并显示错误消息

 Permission denied, please try again.←[0m
 Permission denied, please try again.←[0m
  Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).←[0m
 fatal: The remote end hung up unexpectedly

这是在deploy:update_code 任务期间。我的猜测是出现此错误可能是由于以下原因?

1 - 也许我需要设置一些键?我的 git repo 服务器与目标部署服务器不同,但两者都由我公司托管。建议表示赞赏。

编辑:我试过 ssh_options[:forward_agent] = true default_run_options[:pty] = true 并且它会提示我输入密码,我会输入正确的密码,但它会说权限被拒绝。我不再以 root 身份部署。

【问题讨论】:

    标签: ruby-on-rails git ubuntu ssh capistrano


    【解决方案1】:

    部署服务器上的可用密钥可能无法对您的存储库进行身份验证。

    您可以像注册其他密钥一样将更新后的密钥注册到部署服务器,但您也可以使用agent forwarding(Github 文章):

    它允许您使用本地 SSH 密钥,而不是将无密码的密钥留在您的服务器上。

    Capistrano 告诉您的 ssh 客户端使用代理转发:

    set :ssh_options, :forward_agent => true
    

    【讨论】:

      【解决方案2】:

      我认为你的假设都是正确的。 Capistrano 正在尝试以 root 身份登录。您可以选择 2 个选项。

      1. 开启root密码(假设/etc/ssh/sshd_config中PermitRootLogin默认为yes)

      (remote)$ sudo passwd root

      1. 将 id_rsa.pub 的内容复制到本地计算机上,并附加到远程计算机上的 /root/.ssh/authorized_keys 文件中。

      如果你没有 ~/.ssh/id_rsa.pub,你可以像这样在本地机器上设置你的密钥:

      (local)$ ssh-keygen -t rsa

      首选第二个选项,因为您无需在远程计算机上配置除授权密钥之外的任何其他内容。

      参考link1link2

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多