Сбой Net :: SSH :: аутентификации при развертывании с помощью capistrano

#ruby-on-rails #capistrano

#ruby-on-rails #capistrano

Вопрос:

Я использую Capistrano для развертывания приложения Rails на сервере Linux. Когда я запускаю любую задачу Capistrano, я получаю следующую ошибку:

 Net::SSH::AuthenticationFailed: Authentication failed for user adam@example.com
  

Я использую Capistrano 2.15.5 и net-ssh 2.9.1. Я развертываюсь на новом сервере Linux, на котором есть два пользователя: root и adam. В deploy.rb у меня есть следующее:

 set :user, "adam"
set :password, "my_password"
  

Вышеуказанная ошибка возникает только тогда, когда я пытаюсь выполнить развертывание от имени пользователя adam, я могу выполнить развертывание от имени пользователя root. Поэтому я думаю, что это может быть связано с настройкой / разрешениями Linux, а не с настройкой capistrano. Я не уверен, в чем проблема, кто-нибудь может помочь с этим?

Большое спасибо,

Адам

Комментарии:

1. Я настоятельно рекомендую вам удалить все следы паролей из ваших сценариев развертывания, создать несколько ключей SSH и настроить пересылку агента SSH, если вы развертываете из GitHub или другого удаленного репозитория. Также было бы разумно отключить аутентификацию по паролю на вашем сервере. Это довольно небезопасно.

2. @AdamP Какова ваша версия net-ssh gem? если это не 2.7.0. попробуйте перейти на эту версию и попробуйте один раз

3. РЕШАЕМАЯ — спасибо, ануша, изменение net-ssh на 2.7.0 сделало свое дело

Ответ №1:

Прежде всего, убедитесь, что вы можете подключиться к серверу по SSH в качестве пользователя развертывания. Как только вы сможете это сделать, убедитесь, что вы можете получить доступ к каталогам развертывания и создавать в них файлы и т. Д.

Как только все это заработает, в Capistrano есть несколько задач развертывания, специально разработанных для проверки наличия у вас всех необходимых разрешений. Запустите их.

После этого вы должны быть готовы к работе.

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

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

Комментарии:

1. Спасибо, Джон. Я согласен, что похоже, что мне не хватает базовых прав доступа — странно то, что я могу подключиться к серверу по SSH как пользователь adam без каких-либо проблем. Также я могу выполнить развертывание с помощью capistrano, используя root пользователя, и не получаю эту ошибку. Есть ли у вас какие-либо идеи, какие разрешения мне могут понадобиться для просмотра? Я не уверен, с чего начать!