【问题标题】:Net::SSH::AuthenticationFailed when deploying with capistrano使用 capistrano 部署时 Net::SSH::AuthenticationFailed
【发布时间】:2025-12-03 22:00:01
【问题描述】:

我正在使用 Capistrano 将 Rails 应用程序部署到 linux 服务器。当我运行任何 Capistrano 任务时,我收到以下错误:

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

我正在使用 Capistrano 2.15.5 和 net-ssh 2.9.1。我正在部署到一个新的 linux 服务器,它有两个用户:root 和 adam。我在 deploy.rb 中有以下内容:

set :user, "adam"
set :password, "my_password"

上述错误仅在我尝试以用户 adam 进行部署时发生,我可以以 root 用户身份进行部署。因此我认为这可能与 linux 设置/权限有关,而不是 capistrano 设置。不知道问题出在哪里,谁能帮忙解决一下?

非常感谢,

亚当

【问题讨论】:

  • 如果您从 GitHub 或其他远程存储库进行部署,我强烈建议您从部署脚本中删除所有密码痕迹,创建一些 SSH 密钥,并配置 SSH 代理转发。在您的服务器上禁用密码验证也是谨慎的做法。这很不安全。
  • @AdamP 你的 net-ssh gem 版本是多少?如果不是 2.7.0。尝试更改为该版本并尝试一次
  • 已解决 - 感谢 anusha,将 net-ssh 更改为 2.7.0 解决了问题

标签: ruby-on-rails capistrano


【解决方案1】:

首先,确保您可以作为部署用户通过 SSH 连接到服务器。一旦你可以做到这一点,请确保你可以访问部署目录并在其中创建文件等。

一旦一切正常,Capistrano 会执行一些部署任务,专门用于检查您是否具备所有必备权限。运行它们。

在那之后你应该很高兴了。

从您粘贴的错误来看,您似乎缺乏基本访问权限,无法使用您正在使用的用户名/密码组合通过 SSH 登录。

根据我对您问题的评论 - 您应该认真考虑放弃密码以支持 SSH 密钥。

【讨论】:

  • 谢谢乔恩。我同意这确实看起来我缺乏基本的访问权限 - 奇怪的是我可以以用户 adam 的身份通过 SSH 连接到服务器而没有任何问题。我也可以使用 root 用户使用 capistrano 进行部署,并且不会出现此错误。您知道我可能需要查看哪些权限吗?我不知道从哪里开始!