Net :: SSH :: AuthenticationFailed:用户身份验证失败

时间:2016-12-28 20:40:00

标签: ruby-on-rails ubuntu ssh capistrano

本地计算机用户名:Christopher

Ubuntu服务器用户名:my_app_name

我已经按照Digital Ocean文档设置了一个带Ruby on Rails的Ubuntu 16.04服务器,这是我第一次这样做,但是当我到达cap production deploy:initial时,控制台返回Net::SSH::AuthenticationFailed: Authentication failed for user Christopher@12.23.34.45即使我能够在没有问题的情况下ssh到我的root和用户帐户。

我按照这些说明操作:

如何将Droplet与Digital Ocean连接 https://www.digitalocean.com/community/tutorials/how-to-connect-to-your-droplet-with-ssh

使用Ubuntu 16.04进行初始服务器设置
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04

我使用以下方法在本地计算机上生成了一个ssh公钥/私钥对

ssh-keygen -t rsa

我将公钥从本地计算机添加到服务器~/.ssh/authorized_keys文件中。然后我就可以ssh到我的root和用户帐户。

然后我按照这些说明操作:

使用Capistrano,Nginx和Puma在Ubuntu 14.04上部署Rails应用程序 https://www.digitalocean.com/community/tutorials/deploying-a-rails-app-on-ubuntu-14-04-with-capistrano-nginx-and-puma

我生成了另一个ssh密钥,这次是在服务器上,并将公钥添加到我的github的部署密钥列表中。然后我能够通过ssh成功克隆我的回购。

我运行以下命令:

cat ~/.ssh/id_rsa.pub | ssh -p your_port_num deploy@your_server_ip 'cat >> ~/.ssh/authorized_keys'

cap production deploy:initial

然后回来:

Net::SSH::AuthenticationFailed: Authentication failed for user Christopher@12.23.34.45

我真的很感激任何帮助,因为这是我第一次部署到Ubuntu服务器,我真的想知道我做错了什么。提前谢谢。

4 个答案:

答案 0 :(得分:22)

您是否已将密钥添加到代理?

你跑步时看到了什么:

$ ssh-add -l

如果您收到'代理没有身份',请将密钥添加到:

$ ssh-add id_rsa_key_name

答案 1 :(得分:4)

首先,您需要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) }
#

我刚刚从pub删除了id_rsa.pub

然后运行

cap production deploy:initial

现在应该可以了。相同的更改修复了我的应用https://www.wiki11.com的问题。

答案 2 :(得分:3)

你有:     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) }

密钥只应具有私钥位置。另外,使用ssh-add在本地计算机上启用ssh-agent。在ForwardAgent yes中为您的主持人添加~/.ssh/config

答案 3 :(得分:0)

您需要将以下行添加到config / deploy.rb

ssh_options[:forward_agent] = true

参考this post.