生产中的net_ssh使用公钥返回“身份验证失败”

时间:2014-06-27 11:55:58

标签: ruby-on-rails ruby linux ubuntu net-ssh

我正在尝试在远程服务器上执行几个命令,并且作为身份验证方法,我正在使用公钥。

公钥在服务器上配置正确,我可以连接到它,而系统没有系统提示我输入密码:

ssh root@example.com

所以这就是我在代码中所做的:

Net::SSH.start(host, user, :keys=>["~/.ssh/id_rsa","~/.ssh/id_rsa.pub"]) do |ssh|
  ssh.exec "service nginx reload"
end

在本地计算机上,一切正常,在生产服务器上,我收到错误。

Net::SSH::AuthenticationFailed: Authentication failed for user root@example.com

我做了一些谷歌搜索,我已经尝试回溯到net_ssh 2.7.0,但没有运气,同样的问题。我也尝试将相对路径替换为绝对路径,在我的例子中是/root/.ssh / ... 我尝试添加一个选项

:auth_methods => ['publickey']

但仍然没有运气。

我也确定密钥位于正确的路径中。

编辑1

值得注意的是,在生产rails控制台中运行时,这非常有效。

编辑2

此处的症状类似于此问题中的症状:Net::SSH works from production rails console, AuthenticationFailed from production webapp 除了我的应用程序从root运行,因此不应该是权限问题。

编辑3

我暂时回到密码验证功能正常但我真的很想使用密钥验证。

非常感谢您对此问题的任何帮助。

0 个答案:

没有答案
相关问题