0

同じ VPS サーバー上に gitosis サーバーとステージ サーバーを構築します。ローカル マシンまたはステージ サーバーで gitosis からリポジトリを複製すると、うまくいきます。しかしcap deploy、ローカルマシンでは常に以下のようにパスワードを入力するように求められますが、どのパスワードが正しいのかわからず、すべてのパスワードを試してもうまくいきません。

でローカルリポジトリをコピーできることは知ってdeploy_via: copyいますが、他のプロジェクト用にgitosisサーバーを構築することを好みます。

何か案は?ありがとう。

環境

gitosis とステージ サーバー ip: 106.187.xxx.xxx(セキュリティ上の理由からいくつかの番号をマスクします)

ログ

  * executing `deploy'
    triggering before callbacks for `deploy'
  * executing `check:revision'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    updating the cached checkout on all servers
    executing locally: "git ls-remote gitosis@106.187.xxx.xxx:foo_project.git master"
    command finished in 1105ms
  * executing "if [ -d /home/deployer/apps/railsapp/shared/cached-copy ]; then cd /home/deployer/apps/railsapp/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 07827de89355c5366c4511ee22fdd9c68a31b0be && git clean -q -d -x -f; else git clone -q gitosis@106.187.xxx.xxx:foo_project.git /home/deployer/apps/railsapp/shared/cached-copy && cd /home/deployer/apps/railsapp/shared/cached-copy && git checkout -q -b deploy 07827de89355c5366c4511ee22fdd9c68a31b0be; fi"
    servers: ["106.187.xxx.xxx"]
    [106.187.xxx.xxx] executing command
 ** [106.187.xxx.xxx :: out] Password:
Password: 
 ** [106.187.xxx.xxx :: out]
 ** [106.187.xxx.xxx :: out] Password:
Password: 
 ** [106.187.xxx.xxx :: out]
 ** [106.187.xxx.xxx :: out] Password:
Password: 
 ** [106.187.xxx.xxx :: out]
 ** [106.187.xxx.xxx :: out] Permission denied (publickey,keyboard-interactive).
 ** [106.187.xxx.xxx :: out] fatal: The remote end hung up unexpectedly

deploy.rb

server "106.187.xxx.xxx", :web, :app, :db, primary: true

set :application, "railsapp"
set :user, "deployer"
set :local_user, "joshchang"
set :deploy_to, "/home/#{user}/apps/#{application}"

set :use_sudo, false
set :rails_env, "stage"

set :scm, "git"
set :repository, "gitosis@106.187.xxx.xxx:foo_project.git"
set :deploy_via, :remote_cache
set :branch, "master"

default_run_options[:pty] = true
ssh_options[:forward_agent] = true
4

1 に答える 1

0

申し訳ありませんが、質問を理解するのは少し難しいですが、gitcapistrano 内で使用するには 2 つの方法があります。1 つ目は、サーバーに git リポジトリへの直接アクセスを許可することです。たとえば、GitHub では、アクセスが必要なサーバーの公開鍵である「デプロイ キー」をインストールするオプションがあります。gitosis にこのオプションがあるかどうかを確認してください。

ただし、その前に、別のアプローチを検討してください。それは、デプロイを行うユーザーの git 認証を渡すことです。そのため、デプロイするときは、サーバーに指示するのではなく、自分でプルします。どちらの方法にも一長一短はありますが、長い目で見れば後者の方が扱いやすいと思います。

2 番目の方法を使用するには、展開する (capistrano を実行している) 人のマシンが 1)ssh-agent実行されている必要があり、2)公開鍵の使用ssh-addを承認するために使用する必要があります。ssh-agent透明です。

2 番目の方法を使用する場合、git へのアクセスはローカルと同じになるため、パスワードの入力を求める必要はありません。それ以外の場合は、設定はdeploy.rbそのままで問題ありません。

于 2012-11-19T19:21:50.813 に答える