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

Permission Denied error deploying with Capistrano3

我正在尝试通过 SSH 连接到 git 服务器的 Capistrano3 进行部署。 使用正常的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'
}

我漏掉了什么分数吗?

黑暗中的狂野刺杀,但这里有一些尝试。我认为您可能需要在 :ssh_options 中指定一个 :user。您可以 to/have 从您的 :repo_url 中删除 teh ssh://。从您的关键位置来看,您甚至可能不需要 keys: 在您的 ssh 选项中。另外,请确保您的 public 密钥在目标服务器上(这可能不言而喻)。

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

  • 您使用的是部署密钥还是 SSH 代理?如果是前者,请确保您在服务器上部署到的用户帐户的默认密钥有效。如果是后者,请确保 ssh-agent 是 运行ning 并且您已经 ssh-add 编辑了它的密钥。
  • 登录服务器并运行 ssh -Tv your-repo-url。它应该 return 一条关于成功验证的消息。如果没有,请调试直到此命令起作用。 -v 的输出将帮助您了解它正在使用哪些键。
  • 如果您正在使用部署密钥,请检查服务器上的 ssh 密钥是否为 chmod 600 以及 ~/.ssh 目录是否为 chmod 700。如果不是这种情况,请这样做。
  • 使用 Capistrano SSH Doctor 帮助调试您的连接。