0

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

设置:存储库,“ssh://non-root-user@mydomain.com/opt/git/hub/app.git”

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

设置:deploy_via,:复制

它可以毫无问题地工作。但是当我使用远程缓存进行部署时......

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 身份部署。

4

2 回答 2

0

我认为你的假设都是正确的。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

第二个选项是首选,因为您不必在远程计算机上配置任何其他内容,除了授权密钥。

参考链接1链接 2

于 2013-10-02T06:30:57.700 回答
0

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

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

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

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

set :ssh_options, :forward_agent => true
于 2013-10-02T06:43:55.543 回答