【问题标题】:Ssh authentication error while deploying using capistrano使用 capistrano 部署时出现 SSH 身份验证错误
【发布时间】:2015-11-23 19:30:10
【问题描述】:

我正在尝试通过 capistrano 从 mac 部署我的 rails 应用程序 (Ruby 2.1.2 and Rails 4.1.4)。我在服务器上设置了ssh 密钥。但是每当我尝试部署时,我都会不断收到身份验证错误。错误是:

SSHKit::Runner::ExecuteError: Exception while executing on host xxx.xxx: Authentication failed for user deploy@xxx.xxx

接着是:

Net::SSH::AuthenticationFailed: Authentication failed for user deploy@xxx.xx

这是我的 staging.rb:

server "xxx.xx.xxx", user: "deploy", roles: %w{web app db}
set :ssh_options, {
  user: "root",
  forward_agent: false,
  keys: '~/.ssh/id_rsa',
  auth_methods: %w(publickey password)
}
set :branch, "master"
set :rails_env,   "staging"

我可以使用ssh root@xxx.xx 通过终端登录服务器,但无法使用 capistrano 登录。任何帮助或建议都将受到欢迎。

【问题讨论】:

  • 用户 deploy@xxx.xx 的身份验证失败,而不是 root@xxx.xx。更正staging.rb 文件的第一行。

标签: ruby-on-rails ssh capistrano


【解决方案1】:

起初。您在一个配置中使用两个不同的用户。选择一个并编辑您的 staging.rb

我也不确定使用公钥是一个好方法。尝试为用户部署添加私钥。然后,如果您能够以 deploy 身份登录

ssh -i id_rsa deploy@xxx.xx.xx.xx

尝试将 gem net-ssh 更新到版本 3.0.1。然后你可以像

一样编写你的配置
set :ssh_options, {
  user: "deploy",      
  keys: ["~/.ssh/id_rsa"]      
} 

【讨论】:

    【解决方案2】:

    我的应用程序 https://www.wiki11.com 也遇到了同样的问题。

    遇到错误的人

    Net::SSH::AuthenticationFailed: Authentication failed for user deploy@XXX.XX.XX.XXX
    

    这里是解决方案

    首先你需要 ssh 到你的服务器并运行

    eval `ssh-agent`
    

    然后

    ssh-add ~/.ssh/id_rsa
    

    现在改变

    set :ssh_options, { forward_agent: true, user: fetch(:user), keys: %w(~/.ssh/id_rsa.pub) } 
    #...
    

    set :ssh_options, { forward_agent: true, user: fetch(:user), keys: %w(~/.ssh/id_rsa) }
    #...
    

    我刚刚从id_rsa.pub 中删除了pub

    然后运行

    cap production deploy:initial
    

    它现在应该可以工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-23
      • 2020-11-28
      • 2016-09-05
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多