3

Capifony (symfony の Capistrano) をセットアップしていますが、複数のサーバーの展開をテストするときに ssh パスワードに問題があります。

ここにいくつかのバージョンがあります:

daniel@fiji:~$ ruby --version
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]

daniel@fiji:~$ cap --version
Capistrano v2.9.0

daniel@fiji:~$ uname -a
Linux fiji 3.0.0-13-generic-pae #22-Ubuntu SMP Wed Nov 2 15:17:35 UTC 2011 i686 i686 i386 GNU/Linux

そして deploy.rb からのいくつかの構成:

set :domain, "mydomain"
...
set :user, "sshuser"
set :password, "sshpassword"
...
role :web, domain
role :app, domain
...

単一のサーバーへの展開はうまく機能し、パスワードを入力する必要はありません. 大丈夫だ。しかし、構成にさらにサーバーを追加しようとすると (6 ~ 9 台のマシンにデプロイする必要があります)、次のような構成になります。

...
set :user, "sshuser"
set :password, "sshpassword"
role :web, "ipaddr1", "ipaddr2"
role :app, "ipaddr1", "ipaddr2"
...

カピストラーノは、以前のように設定されていても、リストされている各サーバーの ssh パスワードを尋ね始めます...この構成の何が問題になっていますか? パスワードを入力すると、プロセスが続行され、すべてが機能しますが、パスワードを毎回入力することは避けたいと思います。

ありがとうダニエル

4

2 に答える 2

4

capistrano がパスワードを何度も要求する理由がわかりません。ただし、この問題を解決する 1 つの方法は、capistrano wiki でも提案されている公開鍵認証を使用することです。(これを設定する方法の例については、このチュートリアルを参照してください)

要するに:

  1. を使用してキーを生成しますssh-keygen -t rsa -C "youremail"
  2. 公開鍵をリモート ホストにコピーしますscp -p .ssh/id_rsa.pub remoteuser@remotehost:
  3. サーバー上 の承認済みキー ファイルに公開キーを追加しますcat id_rsa.pub >> ~/.ssh/authorized_keys。(.ssh ディレクトリを作成する必要がある場合があります)

その後、パスワードを 1 回入力するだけでよく、 deploy.rb ファイルにパスワードをハードコーディングする必要はありません。

于 2011-11-23T20:48:21.153 に答える
1

より経験豊富なユーザーによると、ssh認証にパスワードを使用することはお勧めできません。sshキーを使用してそれらに依存する方がはるかに優れています。行を削除するだけです

set :password, "sshpassword"

そして明らかに、展開するすべてのサーバーに公開鍵を設定します。

于 2011-11-23T21:26:26.203 に答える