5

我正在尝试使用服务器上的远程 git 存储库使用 capistrano 部署我的 rails 4 应用程序。我的 git 存储库位于我将应用程序部署到的同一台服务器上。每当我尝试时,cap deploy我都会收到此错误

my/local/rails/app/directory$ cap deploy
    triggering load callbacks
  * 2013-08-30 15:51:20 executing `deploy'
  * 2013-08-30 15:51:20 executing `deploy:update'
 ** transaction: start
  * 2013-08-30 15:51:20 executing `deploy:update_code'
    updating the cached checkout on all servers
    executing locally: "git ls-remote ssh://git@myserver.com/var/repos/test.git master"
    command finished in 684ms
  * executing "if [ -d /var/www/test/www/shared/cached-copy ]; then cd /var/www/test/www/shared/cached-copy && git fetch  origin && git fetch --tags  origin && git reset  --hard 9de1df43a7959b953dc0b35c2ab27ba84698602a && git clean  -d -x -f; else git clone -b master ssh://git@myserver.com/var/repos/test.git /var/www/test/www/shared/cached-copy && cd /var/www/test/www/shared/cached-copy && git checkout -b deploy 9de1df43a7959b953dc0b35c2ab27ba84698602a; fi"
    servers: ["myserver.com"]
    [myserver.com] executing command
 ** [myserver.com :: out] Cloning into '/var/www/test/www/shared/cached-copy'...
 ** [myserver.com :: out]
 ** [myserver.com :: out] git@myserver.com's password:
Password: 
 ** [myserver.com :: out]
 ** [myserver.com :: out] Permission denied, please try again.
 ** git@myserver.com's password:
Password: 
 ** [myserver.com :: out]
 ** [myserver.com :: out] Permission denied, please try again.
 ** git@myserver.com's password:
Password: 
 ** [myserver.com :: out]
 ** [myserver.com :: out] Permission denied (publickey,password).
 ** fatal: Could not read from remote repository.
 ** 
 ** Please make sure you have the correct access rights
 ** and the repository exists.
    command finished in 18891ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /var/www/test/www/releases/20130830225140; true"
    servers: ["myserver.com"]
    [myserver.com] executing command
    command finished in 700ms
failed: "rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'ruby-2.0.0-p247' -c 'if [ -d /var/www/test/www/shared/cached-copy ]; then cd /var/www/test/www/shared/cached-copy && git fetch  origin && git fetch --tags  origin && git reset  --hard 9de1df43a7959b953dc0b35c2ab27ba84698602a && git clean  -d -x -f; else git clone -b master ssh://git@myserver.com/var/repos/test.git /var/www/test/www/shared/cached-copy && cd /var/www/test/www/shared/cached-copy && git checkout -b deploy 9de1df43a7959b953dc0b35c2ab27ba84698602a; fi'" on myserver.com

当我输入我的密码时,它会说权限被拒绝,我确定密码是正确的。这是我的deploy.rb

require 'bundler/capistrano'
require 'rvm/capistrano'

set :user, 'user'
set :domain, 'myserver.com'
set :application, "blog"
set :repository,  "ssh://git@myserver.com/var/repos/test.git"
set :scm_passphrase, "password"
set :deploy_to, '/var/www/test/www'
set :deploy_via, :remote_cache
set :scm, :git
set :branch, 'master'
set :scm_verbose, true
set :use_sudo, false
set :normalize_asset_timestamps, false
set :rails_env, :production

set :rvm_type, :system
set :rvm_ruby_string, 'ruby-2.0.0-p247'
# set :scm, :git # You can set :scm explicitly or Capistrano will make an intelligent guess based on known version control directory names
# Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none`

role :web, domain                         # Your HTTP server, Apache/etc
role :app, domain                         # This may be the same as your `Web` server
role :db,  domain, :primary => true # This is where Rails migrations will run

default_run_options[:pty] = true
ssh_options[:forward_agent] = true
after "deploy", "deploy:migrate", "deploy:restart"
after "deploy:update", "deploy:restart"

# if you want to clean up old releases on each deploy uncomment this:
# after "deploy:restart", "deploy:cleanup"

# if you're still using the script/reaper helper you will need
# these http://github.com/rails/irs_process_scripts

# If you are using Passenger mod_rails uncomment this:
# namespace :deploy do
#   task :start do ; end
#   task :stop do ; end
#   task :restart, :roles => :app, :except => { :no_release => true } do
#     run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
#   end
# end

namespace :deploy do
    desc "cause Passenger to restart"
    task :restart do
        run "touch #{current_path}/tmp/restart.txt"
    end
end

我可以使用 ssh 密钥从命令行 ssh 进入我的服务器,所以工作正常。有谁知道问题是什么?谢谢。

4

1 回答 1

5

这在过去对我有用。希望这对你有用:

ssh-add /.ssh/id_rsa
于 2013-08-30T23:42:59.373 回答