Capistrano просит пароль при развертывании, несмотря на ключи SSH

Мои ssh ключи определенно настраиваются правильно, поскольку мне никогда не предлагают пароль при использовании ssh. Но capistrano все еще просит пароль при развертывании с cap deploy. Это не просит пароль, когда я устанавливаю с cap deploy:setup хотя, странно достаточно. Это сделало бы цикл развертывания настолько более гладким без подсказки пароля.

Специфические особенности: я развертываю приложение Sinatra на Dreamhost совместно использованная учетная запись (который использует Пассажира). Я следовал учебному руководству для того, чтобы сделать так долго назад, который работал отлично тогда. Что-то повредилось с тех пор. Я использую capistrano (2.5.9) и версию 1.6.1.1 мерзавца. Вот мой Capfile:

load 'deploy' if respond_to?(:namespace) # cap2 differentiator

set :user, 'ehsanul'
set :domain, 'jellly.com'

default_run_options[:pty] = true

# the rest should be good
set :repository,  "ehsanul@jellly.com:git/jellly.git"
set :deploy_to, "/home/ehsanul/jellly.com"
set :deploy_via, :remote_cache
set :scm, 'git'
set :branch, 'deploy'
set :git_shallow_clone, 1
set :scm_verbose, true
set :use_sudo, false

server domain, :app, :web

namespace :deploy do
  task :migrate do
    run "cd #{current_path}; /usr/bin/rake migrate environment=production"
  end
  task :restart do
    run "touch #{current_path}/tmp/restart.txt"
  end
end

after "deploy", "deploy:migrate"

И вот вывод того, что происходит когда я cap deploy, до подсказки пароля:

$ cap deploy
  * executing `deploy'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    updating the cached checkout on all servers
    executing locally: "git ls-remote ehsanul@jellly.com:git/jellly.git deploy"
/usr/local/bin/git
  * executing "if [ -d /home/ehsanul/jellly.com/shared/cached-copy ]; then cd /home/ehsanul/jellly.com/shared/cached-copy && git fetch  origin && git reset  --hard ea744c77b0b939d5355ba2dc50ef1ec85f918d66 && git clean  -d -x -f; else git clone  --depth 1 ehsanul@jellly.com:git/jellly.git /home/ehsanul/jellly.com/shared/cached-copy && cd /home/ehsanul/jellly.com/shared/cached-copy && git checkout  -b deploy ea744c77b0b939d5355ba2dc50ef1ec85f918d66; fi"
    servers: ["jellly.com"]
    [jellly.com] executing command
 ** [jellly.com :: out] ehsanul@jellly.com's password:
Password:
 ** [jellly.com :: out]
 ** [jellly.com :: out] remote: Counting objects: 7, done.
remote: Compressing objects: 100% (4/4), done.

Что могло быть повреждено?

50
задан ehsanul 16 July 2010 в 14:31
поделиться

1 ответ

В логах видно, что после входа по SSH на jellly.com запрашивается пароль, так что похоже, что пароль запрашивает само обновление git.

Я думаю, это потому, что в настройках репозитория указан ваш пользователь git, хотя в этом случае вы можете получить доступ к нему анонимно.

Вам следует создать анонимную учетную запись git и изменить строку репозитория следующим образом:

set :repository,  "git@jellly.com:git/jellly.git"

В качестве альтернативы, вы можете поместить ваш SSH ключ на ваш рабочий сервер, но это не кажется полезным. Вы также можете настроить SSH на перенаправление запросов аутентификации обратно через начальное SSH-соединение. Однако анонимный контроль исходных текстов только для чтения для развертывания, вероятно, проще.

3
ответ дан 7 November 2019 в 10:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: