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"
答え1
これはおそらく Capistrano の外部と SSH 自体で解決できます。~/.ssh/config ファイルを設定し、ホストのエントリを作成します。
HostName myserver.example.com
PreferredAuthentications=keyboard-interactive
PubkeyAuthentication=no
キーが存在しない場合は、Capistrano は必ずパスワードを要求します。私はそれを実行しました。
答え2
のコードを読んでみるとNet::SSH::KeyManager
、問題が見つかりました。
このマシンには、id_rsa.pub
それなし対応する秘密鍵id_rsa
(id_rsa.ppk
これは PuTTY バージョンのキー ファイルを使用しているため)。
Net::SSH::KeyManager
ただし、キーを使用するのは両方プライベート ファイルとパブリック ファイルはディレクトリ内にあります。残念ながら、これは、秘密キーのない公開キー (または公開キーのない秘密キー) が見つかった場合、キーを破棄するのではなく、すぐに例外をスローすることを意味します。
PuTTYgenを使用してファイルから秘密鍵を.ppk
標準のOpenSSHファイルにエクスポートした後(その後、そのファイルをこの答え)、パスワード認証を使用して接続することができました(それなし別の回答に示されているように、ssh/config ファイルが必要です。
注: これは OpenSSH gem のバグだと思います。無効なキーが 1 つあるからといって、別のキーやパスワードを使用できなくなるわけではありません。