Развертывание на нескольких серверах: запрос пароля ssh для каждого сервера - PullRequest
3 голосов
/ 23 ноября 2011

Я настраиваю 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 для каждого сервера в списке, даже если он установлен как прежде ... что не так с этой конфигурацией? Ввод пароля позволяет продолжить процесс и все работает, но я бы не хотел вводить пароль каждый раз.

Спасибо Daniel

Ответы [ 2 ]

4 голосов
/ 24 ноября 2011

Я не понимаю, почему Капистрано продолжает спрашивать ваш пароль.Однако одним из способов решения этой проблемы является использование аутентификации с открытым ключом, что также предлагается в википедии 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 dir)

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

1 голос
/ 24 ноября 2011

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

set :password, "sshpassword"

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

...