迫使Capistrano要求密码

我正在部署使用Capistrano到一个新的服务器,并有以下问题。 目前,我无法添加一个SSH密钥到服务器login,所以我必须使用密码authentication。 但是,我确实有另一台服务器保存在本地用户帐户的.ssh目录中的一个键。

以下是我尝试login时遇到的错误:

 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忽略密钥的存在,让我用密码login呢? 我试着将set :password, "myp@ssw0rd"deploy.rb ,但没有帮助。


UPDATE

我跟着@ sysadmin1138的答案将以下添加到sshconfiguration文件:

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

现在,我得到的错误:

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

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


以下是我的Capistranoconfiguration的相关部分:

 role :web, "myserver.example.com" set :user, "webappuser" default_run_options[:pty] = true # Allow Capistrano to prompt for passwords set :deploy_to, "/home2/webapp1" 

这可能是在Capistrano和SSH本身之外解决的。 设置〜/ .ssh / config文件为主机创build一个条目:

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

如果没有钥匙,Capistrano肯定会提示input密码,我已经这样做了。

在阅读Net::SSH::KeyManager的代码后,我发现这个问题。

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

Net::SSH::KeyManager ,但是,将只使用一个密钥,如果私人和公共文件都在目录中。 不幸的是,这也意味着如果它find没有私钥的公钥(或没有公钥的私钥),它将立即抛出一个exception,而不是丢弃该密钥。

当我使用PuTTYgen将私钥从.ppk文件导出到一个标准的OpenSSH文件(然后根据这个答案修改该文件)后,我能够使用密码authentication连接( 不需要 ssh / config文件另一个答案)。


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