Развертывание нескольких серверов: запрос пароля ssh для каждого сервера

Я устанавливаю Capifony (Capistrano для symfony), но у меня проблема с паролем 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"
...

Capistrano начинает спрашивать у меня пароль ssh для каждого из перечисленных серверов, даже если он установлен как раньше... что не так с этой конфигурацией? Ввод пароля позволяет продолжить процесс, и все работает, но я бы не хотел каждый раз вводить пароль.

Спасибо, Даниэль.


person dlondero    schedule 23.11.2011    source источник


Ответы (2)


Я не понимаю, почему капистрано продолжает спрашивать ваш пароль. Однако одним из способов решения этой проблемы является использование аутентификации с открытым ключом, что также предлагается в вики-странице capistrano. (см. это руководство для примера как это настроить)

Вкратце:

  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)

После этого вам нужно будет ввести пароль только один раз, и вам не нужно будет жестко запрограммировать пароль в файле deploy.rb.

person HectorMalot    schedule 23.11.2011
comment
Как видите, я остановился на этом решении. Я получил это предложение на Capistrano ML. Спасибо. - person dlondero; 24.11.2011
comment
хм, он продолжает спрашивать у меня пароль, даже если я вошел на сервер, используя свой ключ ssh без пароля ... я могу что-то сделать? - person Sébastien; 22.07.2015

По словам более опытных пользователей, я могу сказать, что использование пароля для аутентификации ssh не является хорошей практикой. Гораздо лучше использовать ssh-ключи и полагаться на них. Просто нужно удалить строку

set :password, "sshpassword"

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

person dlondero    schedule 23.11.2011
comment
ssh-пароли вообще не должны существовать. ;-) - person maraspin; 24.11.2011