我正在尝试使用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'
}
我错过任何一点吗?
答案 0 :(得分:1)
在黑暗中狂奔,但这里有几件事要尝试。我想你可能需要在你的:ssh_options中指定一个:user。您可以/从我的:repo_url中删除teh ssh://。从您的关键位置判断,您可能甚至不需要键:在您的ssh选项中。另外,请确保您的公钥在目标服务器上(这可能不言而喻)。
答案 1 :(得分:1)
99/100次,这意味着您的SSH密钥没有到达Git服务器。看起来您已成功登录服务器。请检查以下内容:
ssh-agent
正在运行,并且您已ssh-add
修改了密钥。ssh -Tv your-repo-url
。它应该返回有关成功进行身份验证的消息。如果没有,请调试直到此命令有效。 -v
的输出将帮助您了解它正在使用的密钥。~/.ssh
目录是否为chmod 700。如果不是这样的话,那就这样吧。