AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 422264
Accepted
Moshe Katz
Moshe Katz
Asked: 2012-08-29 18:55:29 +0800 CST2012-08-29 18:55:29 +0800 CST 2012-08-29 18:55:29 +0800 CST

强制 Capistrano 询问密码

  • 772

我正在使用 Capistrano 部署到新服务器并遇到以下问题。目前,我无法将 SSH 密钥添加到服务器以用于登录,因此我必须使用密码身份验证。但是,我的本地用户帐户.ssh目录中确实有另一台服务器的密钥。

这是我尝试登录时遇到的错误:

C:\Web\WebApp1>cap deploy:setup
  * executing `deploy:setup'
  * executing "mkdir -p /home2/webapp1 /home2/webapp1/releases /home2/webapp1/shared /home2/webapp1/shared/system /home2/webapp1/shared/log /home2/webapp1/shared/pids"
    servers: ["myserver.example.com"]

connection failed for: myserver.example.com (OpenSSL::PKey::PKeyError: not a public key "C:/Users/MyAccount/.ssh/id_rsa.pub")

我怎样才能让 Capistrano 忽略我拥有的密钥的存在并让我使用密码登录?我尝试添加set :password, "myp@ssw0rd"到deploy.rb但没有帮助。


更新

我按照@sysadmin1138 的回答将以下内容添加到 ssh 配置文件中:

HostName myserver.example.com
    PreferredAuthentications=password
    PubkeyAuthentication=no

现在,我收到错误:

connection failed for: myserver.example.com (Net::SSH::AuthenticationFailed: webappuser)

它甚至不要求输入密码。当我尝试在配置文件中指定密码时,它仍然给出相同的错误。


以下是我的 Capistrano 配置的相关部分:

role :web, "myserver.example.com"

set :user, "webappuser"
default_run_options[:pty] = true # Allow Capistrano to prompt for passwords

set :deploy_to, "/home2/webapp1"
ssh
  • 2 2 个回答
  • 3518 Views

2 个回答

  • Voted
  1. sysadmin1138
    2012-08-29T19:09:29+08:002012-08-29T19:09:29+08:00

    这可能可以在 Capistrano 之外和 SSH 本身中解决。设置 ~/.ssh/config 文件并为您的主机创建一个条目:

    HostName myserver.example.com
        PreferredAuthentications=keyboard-interactive
        PubkeyAuthentication=no
    

    如果没有密钥,Capistrano 肯定会提示输入密码,我已经做到了。

    • 3
  2. Best Answer
    Moshe Katz
    2012-08-30T18:23:37+08:002012-08-30T18:23:37+08:00

    看完代码Net::SSH::KeyManager,发现问题所在。

    在这台机器上,我有一个id_rsa.pub 没有对应私钥的公钥id_rsa(因为我使用id_rsa.ppk的是密钥文件的 PuTTY 版本)。

    Net::SSH::KeyManager但是,如果私有文件和公共文件都在目录中,则只会使用密钥。不幸的是,这也意味着如果它发现没有私钥的公钥(或没有公钥的私钥),它会立即抛出异常,而不是直接丢弃密钥。

    在我使用 PuTTYgen 将私钥从.ppk文件导出到标准 OpenSSH 文件(然后根据此答案修改该文件)后,我能够使用密码身份验证进行连接(不需要ssh/config 文件,如另一个答案所示).


    注意:我认为这是 OpenSSH gem 中的一个错误。拥有一个无效密钥不应阻止您使用不同的密钥或密码。

    • 2

相关问题

  • 如何最好地设置 ssh 隧道以访问远程网络 (Linux)

  • SSH 和重定向

  • 通过 SSH 会话使用 NET USER 命令拒绝访问

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve