私はCapistranoとRubyにまったく慣れていないので、基本的な展開をセットアップできないようです。 cap deploy:checkを実行するたびに、次のエラーが発生します。
サーバー:["domain.com"]接続に失敗しました:[email protected](Net :: SSH :: HostKeyMismatch:指紋0c:de:d4:1b:e9:64:83:3a:8b:d7:c3: 42:98:5b:5d:8cが「[domain.com]:22、[62.39.11.2]:22」と一致しません)
私のdeploy.dbは次のようになります:
set :stages, %w(production staging)
set :default_stage, "staging"
require 'capistrano/ext/multistage'
set :application, "captest" # TODO
set :repository, "[email protected]:jy312/captest.git" # TODO
set :scm, :git
set :use_Sudo, false
ssh_options[:forward_agent] = true
default_run_options[:pty] = true
set :deploy_via, :remote_cache
set :copy_exclude, [".git", ".DS_Store", ".gitignore", ".gitmodules"]
set :git_enable_submodules, 1
ローカルコンピューターの公開鍵(id_rsa.pub)をサーバー上のknown_hostsのリストに追加しようとしましたが、うまくいきませんでした。
任意の提案をいただければ幸いです。助けてくれてありがとう。
宛先サーバーのフィンガープリントがローカルのフィンガープリントと一致していませんknown_hosts
ファイル。ローカルの既存のエントリを削除しますknown_hosts
ファイル。
SSHの問題であるため、Rubyを経由せずに、サーバーに直接SSHで接続して問題を修正することもできます。
または、次のように書き直します(サーバーのユーザー名とIPを変更します)。
$ ssh-keygen -f "/home/USERNAME/.ssh/known_hosts" -R 178.X.X.X
次にサーバーに入ります
$ ssh [email protected]
と答えるyes
デプロイを再試行します
幸運を ;)
シナリオ:ソースマシンから宛先マシンへのSSH
上記のシナリオでNet :: SSH :: HostKeyMismatchがスローされた場合は、以下を実行してください。
1) Login to source machine and Sudo su <User>
2) ssh destination machine
3) in step2, HostKeyMismatch error will be displayed and also the known hosts location.
or
2) cd ~
3) cd .ssh
4) vim known_hosts
5) clear the content of the file and save and quit (using command - :wq)
これで問題が解決するはずです。
本番システムには適していませんが、ローカル開発環境への展開中にこの問題に直面した場合は、厳密なホストキー検証を無視するようにCapistranoに指示することを検討できます。
deploy.rb
set :ssh_options, paranoid: false
https://github.com/net-ssh/net-ssh/blob/e90551a4672587e294b47f824a401550f55184cc/lib/net/ssh.rb#L16