web-dev-qa-db-ja.com

CapistranoといくつかのSSHキー

2つの異なるSSHキーを使用するにはCapistranoが必要です。 1つはgitリポジトリ用で、もう1つはサーバーのデプロイ先です。

.sshフォルダーで名前をid_rsaに変更したキーはどちらでも機能します。もう1つはそうではありません。 gitキーの名前をid_rsaに変更すると、Capistranoはgitリポジトリに接続できますが、デプロイするサーバーで認証できません。それを別の名前で呼ぶと、gitリポジトリに接続できなくなります。他のキーが機能することはわかっています。ssh-i〜/.ssh/otherKey.pemを実行すると、サーバーに正常に接続できるからです。

これは、deploy.rbCapistranoファイルにあるものです。

ssh_options[:keys] = [
        File.join(ENV["HOME"], ".ssh", "id_rsa"),
        File.join(ENV["HOME"], ".ssh", "deploy")
    ]

ssh_options[:forward_agent] = true 

Capistranoに両方のキーを使用するように指示するにはどうすればよいですか? id_rsaと呼ばれるものだけを使用しているようです。

編集:

エラーメッセージ付きのカピストラーノからの出力は次のとおりです。

$ cap yii deploy
  * executing `yii'
Yii
  * executing `deploy'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    executing locally: "git ls-remote [email protected]:/projectyii.git HEAD"
  * executing "git clone -q [email protected]:/projectyii.git /var/www/projectyii-trunk/releases/20110824174629 && cd /var/www/projectyii-trunk/releases/20110824174629 && git checkout -q -b deploy 5e14521285ca04a605353e97bdf31c3a2889dbfb && (echo 5e14521285ca04a605353e97bdf31c3a2889dbfb > /var/www/projectyii-trunk/releases/20110824174629/REVISION)"
    servers: ["yii.project.com"]
    [yii.project.com] executing command
 ** [yii.project.com :: err] Error reading response length from authentication socket.
 ** [yii.project.com :: err] Permission denied (publickey,keyboard-interactive).
 ** [yii.project.com :: err] fatal: The remote end hung up unexpectedly
    command finished
*** [deploy:update_code] rolling back
  * executing "rm -rf /var/www/projectyii-trunk/releases/20110824174629; true"
    servers: ["yii.project.com"]
    [yii.project.com] executing command
    command finished
failed: "sh -c \"git clone -q [email protected]:/projectyii.git /var/www/projectyii-trunk/releases/20110824174629 && cd /var/www/projectyii-trunk/releases/20110824174629 && git checkout -q -b deploy 5e14521285ca04a605353e97bdf31c3a2889dbfb && (echo 5e14521285ca04a605353e97bdf31c3a2889dbfb > /var/www/projectyii-trunk/releases/20110824174629/REVISION)\"" on yii.project.com

編集:

もう1つ、デプロイサーバーではなく、ローカルマシンから完全に正常に機能します。まったく同じ構成ファイルを使用します。 Capistranoはローカルマシンでは正しいキーを使用しているようですが、デプロイマシンでは使用していません。

19
MrB

免責事項:私はキャピストラーノについて何も知りません。

通常のssh呼び出しを行う(またはこれを行うためにgitを呼び出す)場合は、ホストごと(またはホストごと)の~/.ssh/configで使用する正しいキーを構成できますホストエイリアス)ベース。

たとえば、~/.ssh/configファイルに次の行があります。

# Git bei Github
Host github.com
User git
IdentityFile ~/.ssh/svn_id_rsa

#  Andere Mathe-Hosts
Host *.math.hu-berlin.de
User ebermann
IdentityFile ~/.ssh/id_rsa
ControlMaster auto
23
Paŭlo Ebermann

私はdeploy.rbにこの行があります:

ssh_options[:keys] = %w(/Users/victor.pudeyev/ec2/MBP-2.pem)

これは、キーファイル名がスペースで区切られていることを示しています。

ssh_options[:keys] = %w(/Users/victor.pudeyev/ec2/MBP-1.pem /Users/victor.pudeyev/ec2/MBP-2.pem)
10
Victor Piousbox

この問題が発生し、capfileにssh転送が設定されました。それを削除すると、ターゲットボックスが独自のキーを使用できるようになります

0
James

ここでのパーティーには少し遅れていますが、1つのオプションは、使用するファイルを検出するためにRuby glueを少し使用することです。

['~/.ssh/onekey.pem','~/.ssh/id_rsa'].each do |name|
  if File.exists?(File.expand_path(name))
    ssh_options[:keys] ||= name
  end
end
0
troelskn