【问题标题】:Rails Capistrano Authentication fail errorRails Capistrano 身份验证失败错误
【发布时间】:2020-01-01 23:21:41
【问题描述】:

我正在关注tutorial,使用Capistrano3Puma Web 服务器和nginx 在AWS 上托管我的Rails 6 应用程序。我处于最后阶段,但是当我尝试使用 Capistrano 部署我的 Ruby on Rails 应用程序时,不断收到 Authentication failed 错误。我使用的命令是cap production deploy。我创建了一个 ssh 密钥对,将公钥添加到包含应用程序代码的 Github 存储库中,并将私钥文件路径添加到文件中的以下 sn-p:/Users/edward/Project/EdwardBlog/blog/config/deploy/production.rb

set :ssh_options, { 
  forward_agent: true, 
  auth_methods: %w[publickey],
  keys: %w[/Users/edward/.ssh/id_rsa]
}

我可以像ssh -T git@github.com 那样通过 ssh 进入 github,并且我仔细检查了密钥对是否与我添加到我的 github 帐户的公共 SSH 密钥匹配。我还使用 ssh-add -l 将私钥添加到 ssh-agent

我也尝试使用我的密码部署应用程序,但是当我在提示符处输入我的 github 帐户密码时仍然没有运气:

set :ssh_options, {
   keys: %w(/Users/edward/.ssh/id_rsa),
   forward_agent: true,
   auth_methods: %w(password)
 }

我不知道为什么它不使用本地凭据进行身份验证。将不胜感激任何可能的解决方案或解决方法。

这是我在运行命令 cap production deploy --trace 时的消息:

#<Thread:0x00007f9b70963d00@/Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.20.0/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
    12: from /Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.20.0/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute'
    11: from /Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.20.0/lib/sshkit/backends/abstract.rb:31:in `run'
    10: from /Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.20.0/lib/sshkit/backends/abstract.rb:31:in `instance_exec'
     9: from /Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/capistrano-3.11.2/lib/capistrano/scm/tasks/git.rake:8:in `block (3 levels) in eval_rakefile'
     8: from /Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.20.0/lib/sshkit/backends/abstract.rb:80:in `execute'
     7: from /Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.20.0/lib/sshkit/backends/abstract.rb:148:in `create_command_and_execute'
     6: from /Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.20.0/lib/sshkit/backends/abstract.rb:148:in `tap'
     5: from /Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.20.0/lib/sshkit/backends/abstract.rb:148:in `block in create_command_and_execute'
     4: from /Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.20.0/lib/sshkit/backends/netssh.rb:130:in `execute_command'
     3: from /Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.20.0/lib/sshkit/backends/netssh.rb:177:in `with_ssh'
     2: from /Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.20.0/lib/sshkit/backends/connection_pool.rb:63:in `with'
     1: from /Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.20.0/lib/sshkit/backends/connection_pool.rb:63:in `call'
/Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/net-ssh-5.2.0/lib/net/ssh.rb:263:in `start': Authentication failed for user ubuntu@18.191.247.244 (Net::SSH::AuthenticationFailed)
    1: from /Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.20.0/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute'
/Users/edward/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.20.0/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing as ubuntu@18.191.247.244: Authentication failed for user ubuntu@18.191.247.244 (SSHKit::Runner::ExecuteError)
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as ubuntu@18.191.247.244: Authentication failed for user ubuntu@18.191.247.244


Caused by:
Net::SSH::AuthenticationFailed: Authentication failed for user ubuntu@18.191.247.244

Tasks: TOP => deploy:check => git:check => git:wrapper
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as ubuntu@18.191.247.244: Authentication failed for user ubuntu@18.191.247.244


** DEPLOY FAILED
** Refer to log/capistrano.log for details. Here are the last 20 lines:


Please make sure you have the correct access rights

and the repository exists.

  INFO ---------------------------------------------------------------------------

  INFO START 2020-01-01 13:58:01 -0800 cap production deploy

  INFO ---------------------------------------------------------------------------

  INFO rbenv: rbenv_ruby is not set; ruby version will be defined by the remote hosts via rbenv

  INFO [ca90e3ef] Running /usr/bin/env mkdir -p /tmp as ubuntu@18.191.247.244

 DEBUG [ca90e3ef] Command: ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="" ; /usr/bin/env mkdir -p /tmp )

  INFO ---------------------------------------------------------------------------

  INFO START 2020-01-01 13:58:35 -0800 cap production deploy

  INFO ---------------------------------------------------------------------------

  INFO rbenv: rbenv_ruby is not set; ruby version will be defined by the remote hosts via rbenv

  INFO [cd0c878a] Running /usr/bin/env mkdir -p /tmp as ubuntu@18.191.247.244

 DEBUG [cd0c878a] Command: ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="" ; /usr/bin/env mkdir -p /tmp )

  INFO ---------------------------------------------------------------------------

  INFO START 2020-01-01 14:28:49 -0800 cap production deploy

  INFO ---------------------------------------------------------------------------

  INFO rbenv: rbenv_ruby is not set; ruby version will be defined by the remote hosts via rbenv

  INFO [a745cde8] Running /usr/bin/env mkdir -p /tmp as ubuntu@18.191.247.244

 DEBUG [a745cde8] Command: ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="" ; /usr/bin/env mkdir -p /tmp )

【问题讨论】:

    标签: ruby-on-rails ruby nginx ssh puma


    【解决方案1】:

    用户 ubuntu@18.191.247.244 认证失败

    这个问题是在你的部署目标中以ubuntu 进行炮击,它与 Github 无关。确保您可以使用ubuntu 用户访问该 IP,如果可以,请尝试将您的 SSH 密钥添加到您的代理(ssh-add ~/.ssh/id_rsa 或其他),以确保 Capistrano 可以与您的部署目标计算机建立 SSH 连接。

    【讨论】:

    • 我将如何以 ubuntu 用户身份进入 ip?对不起我的无知,我想我在这里错过了更大的画面。我认为cap production deploy 会使用与本地相同的身份验证将我的项目克隆到服务器。
    • ssh -v ubuntu@18.191.247.244 会做到的。如果成功,-v 将显示它正在使用的密钥。确保将密钥添加到您的 ssh 代理。 cap 将使用您的本地凭据,但在某些情况下可能无法找到它们,您可能需要通过将它们添加到代理来帮助它。
    • 我能够连接到 18.191.247.244,但无法进行身份验证:Permissions denied (publickey) 消息。我需要将本地计算机上的密钥复制到服务器吗?
    • 是的。您需要将您的 pubkey 安装到目标服务器上的 ~/.ssh/authorized_keys,或者您需要使用已经安装了 pubkey 的 privkey。
    • 谢谢。我意识到我需要发送 github 私钥和服务器私钥来部署目标。所以我的production.rb 文件最终看起来像这样:set :ssh_options, { forward_agent: true, auth_methods: %w[publickey], keys: %w[/Users/edward/Desktop/KEYS/blog/blog-key-pair.pem] } set :ssh_options, { forward_agent: true, auth_methods: %w[publickey], keys: %w[/Users/edward/.ssh/id_rsa] }
    猜你喜欢
    • 2014-05-23
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多