1

突然,Capistrano 开始返回一个 SSH 问题:

** [deploy:update_code] 回滚时出现异常:Capistrano::ConnectionError,连接失败:staging.myserver.com (Net::SSH::AuthenticationFailed: root) 连接失败:staging.myserver.com (Net:: SSH::AuthenticationFailed: root)

我的 deploy.rb 包含:

require 'capistrano/ext/multistage'

ssh_options[:forward_agent] = true
ssh_options[:keys] = ["myserver_rsa"]

set :stages, ["staging", "production"]
set :default_stage, "staging"

set :scm, "git"
set :application, "myapp"
set :repository, "git@bitbucket.org:project/myapp.git"
set :use_sudo, false
set :deploy_via, :remote_cache

在我的 config/deploy/staging.rb

server 'staging.myserver.com', :app, :web, :db, primary: true

set :branch, 'staging'
set :rails_env, "staging"

set :deploy_to, "/var/rails/#{application}"
set :user, "root"
set :password, "my_triple_check_password_login"
set :domain, "staging.myserver.com"

我在这里发布之前所做的测试:

  1. 尝试通过 ssh (ssh -v staging.myserver.com) 登录 => 登录成功,无需提示我的密码。(使用 myserver_rsa 密钥)

  2. 代理转发 => 在服务器和本地启用

  3. 尝试通过不带密钥的 ssh 登录:=> 提示输入密码。从 staging.rb 复制并粘贴它并完美记录。

  4. 更改服务器根密码。=> 尝试通过 ssh root@... 使用新密码登录...效果很好。但通过 capistrano,失败了。

  5. 在 IRB 中运行一个 Net SSH 脚本来登录。=> 登录并hostname从 bash 返回结果。

这个问题昨天突然开始了。我真的没有更多的想法:/

首先,无论是 Cap 部署配置,服务器上都没有任何变化。

谢谢!

4

2 回答 2

4

我发现!

在我的/etc/ssh_config根部分中,我有:

Host *
     SendEnv LANG LC_*
     XAuthLocation /opt/X11/bin/xauth
     ForwardAgent yes
     PasswordAuthentication yes

我需要为我的暂存环境创建一个部分:

   Host staging.myserver.com
     IdentityFile /Users/hlegius/.ssh/myserver_rsa
     ForwardAgent yes
     RSAAuthentication no
     PasswordAuthentication no

并编辑我config/deploy.rb的添加:default_run_options[:pty] = true

啊啊啊啊,它的作品!

于 2013-03-17T16:20:35.217 回答
0

此错误是由于身份验证失败造成的。Capistrano 无法使用给定的用户名和密码连接到部署服务器。我已经完成了服务器的部署,现在正在部署到新服务器。然后我得到了这个错误。

它提示我提供新服务器的密码。我输入了新的服务器密码。但它显示了这个错误。

我在这里更改了域

set :domain, "my-new-ip-or-domain"   => my new server domain

但是忘记在我的 deploy.rb 中更改用户名

set :user, "my-new-username"

提供正确的用户名和密码后,它可以完美运行!

于 2014-03-26T11:10:41.810 回答