Rails Capistrano 身份验证失败错误
Rails Capistrano Authentication fail error
我正在关注 tutorial 使用 Capistrano3
、Puma
网络服务器和 nginx
在 AWS 上托管我的 Rails 6 应用程序。我正处于最后阶段,但是当我尝试使用 Capistrano 在 Rails 应用程序上部署我的 Ruby 时,不断收到 Authentication failed 错误。我使用的命令是cap production deploy
。我创建了一个 ssh 密钥对,将 public 密钥添加到我的包含应用程序代码的 Github 存储库,并将私钥文件路径添加到文件中的以下代码段:/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 进入 github,就像这样 ssh -T git@github.com
,我仔细检查了密钥对是否与我添加到我的 github 帐户的 public 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 )
Authentication failed for user ubuntu@18.191.247.244
这个问题是在 shell 作为 ubuntu
进入您的部署目标时出现的,它与 Github 的连接无关。确保您可以 shell 使用 ubuntu
用户进入该 IP,如果是这样,请尝试将您的 SSH 密钥添加到您的代理(ssh-add ~/.ssh/id_rsa
或其他)以确保 Capistrano 可以建立一个SSH 连接到您的部署目标机器。
我正在关注 tutorial 使用 Capistrano3
、Puma
网络服务器和 nginx
在 AWS 上托管我的 Rails 6 应用程序。我正处于最后阶段,但是当我尝试使用 Capistrano 在 Rails 应用程序上部署我的 Ruby 时,不断收到 Authentication failed 错误。我使用的命令是cap production deploy
。我创建了一个 ssh 密钥对,将 public 密钥添加到我的包含应用程序代码的 Github 存储库,并将私钥文件路径添加到文件中的以下代码段:/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 进入 github,就像这样 ssh -T git@github.com
,我仔细检查了密钥对是否与我添加到我的 github 帐户的 public SSH 密钥相匹配。我还使用 ssh-add -l
我也尝试使用我的密码部署应用程序,但当我在提示符下输入我的 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 )
Authentication failed for user ubuntu@18.191.247.244
这个问题是在 shell 作为 ubuntu
进入您的部署目标时出现的,它与 Github 的连接无关。确保您可以 shell 使用 ubuntu
用户进入该 IP,如果是这样,请尝试将您的 SSH 密钥添加到您的代理(ssh-add ~/.ssh/id_rsa
或其他)以确保 Capistrano 可以建立一个SSH 连接到您的部署目标机器。