使用Capistrano3部署权限被拒绝错误

时间:2015-09-23 02:35:05

标签: ruby-on-rails git capistrano3

我正在尝试使用Capistrano3通过SSH连接到git服务器。 可以使用普通的git命令连接到服务器。但是使用capistrano不是。

错误消息

cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as serveruser@xx.xx.xx.xx: git exit status: 128
git stdout: Nothing written
git stderr: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
fatal: The remote end hung up unexpectedly

deploy.rb

# config valid only for current version of Capistrano
lock '3.4.0'

set :application, 'Sample'
set :repo_url, 'ssh://serveruser@xx.xx.xx.xx:22/var/lib/git/public_git/sample.git'
set :deploy_to, '/app/Sample'
set :scm, :git

production.rb

server 'xx.xx.xx.xx', user: 'serveruser', roles: %w{app db web}, my_property: :my_value
role :app, %w{serveruser@xx.xx.xx.xx}, my_property: :my_value

set :ssh_options, {
  keys: %w(/Users/localuser/.ssh/id_rsa),
  forward_agent: false,
  auth_methods: %w(password)
  # password: 'please use keys'
}

我错过任何一点吗?

2 个答案:

答案 0 :(得分:1)

在黑暗中狂奔,但这里有几件事要尝试。我想你可能需要在你的:ssh_options中指定一个:user。您可以/从我的:repo_url中删除teh ssh://。从您的关键位置判断,您可能甚至不需要键:在您的ssh选项中。另外,请确保您的公钥在目标服务器上(这可能不言而喻)。

答案 1 :(得分:1)

99/100次,这意味着您的SSH密钥没有到达Git服务器。看起来您已成功登录服务器。请检查以下内容:

  • 您使用的是部署密钥还是SSH代理?如果是前者,请确保您在服务器上部署的用户帐户上的默认密钥有效。如果是后者,请确保ssh-agent正在运行,并且您已ssh-add修改了密钥。
  • 登录服务器并运行ssh -Tv your-repo-url。它应该返回有关成功进行身份验证的消息。如果没有,请调试直到此命令有效。 -v的输出将帮助您了解它正在使用的密钥。
  • 如果您使用的是部署密钥,请检查服务器上的ssh密钥是否为chmod 600,~/.ssh目录是否为chmod 700。如果不是这样的话,那就这样吧。
  • 使用Capistrano SSH Doctor帮助您调试连接。