Подтвердить что ты не робот

Capistrano SSH:: AuthenticationFailed, не запрашивая пароль

Я использую capistrano успешно какое-то время, и вдруг в каждом проекте я потерял возможность развертывания.

Окружающая среда:

  • os X (Mavericks)
  • ruby ​​1.9.3p194
  • rvm (локально, а не на сервере)
  • рельсы 3.2 и вверх
  • RubyGems 1.8.25

Я не использую rsa_keys или что-либо, что я хочу, чтобы capistrano запрашивал пользователя и пароль. Внезапно он решил не запрашивать пароль, но спрашивает пользователя. Затем он откатывается и дает мне следующую ошибку.

[deploy:update_code] exception while rolling back: Capistrano::ConnectionError, connection failed for: sub.example.com (Net::SSH::AuthenticationFailed: Authentication failed for user [email protected])
connection failed for: sub.example.com (Net::SSH::AuthenticationFailed: Authentication failed for user [email protected])

Это произошло на моем личном ноутбуке и моем iMac на работе. Это происходит при развертывании на два разных сервера (оба linux)

Я здесь совершенно не понимаю. Любые идеи?

4b9b3361

Ответ 1

Подумал! Очевидно, эта проблема была с драгоценным камнем net-ssh. Недавно у меня была версия 2.8.0 с некоторыми обновлениями для моей среды разработки и была причиной.

Я не уверен, почему он терпел неудачу, но gem uninstall net-ssh -v 2.8.0< исправил его для меня.

Если кто-то действительно знает, почему это было проблемой или как я могу исправить эту проблему с более новой версией net-ssh, мне было бы интересно ее услышать.

Ответ 2

Ответ может сломать ваше приложение rails из-за зависимости gem.

Проблема заключается в net-ssh, как правильно ответил Sparkmasterflex, однако пока это будет работать capistrano, это может сломать ваше приложение rails:

Эти шаги фиксировали как capistrano, так и рельсы для меня...

  • В вашем Gemfile добавьте gem 'net-ssh', '2.7.0'
  • Выполнить bundle update net-ssh
  • Запустите bundle (чтобы убедиться, что все работает нормально
  • Запустить gem uninstall net-ssh -v 2.8.0

Если вы являетесь пользователем rails, теперь вы можете запускать сервер rails и capistrano.

Ответ 3

У меня есть обходное решение, которое не требует понижения рейтинга net-ssh за комментарий в , который Zach Lipton. Поместите этот код в config/deploy.rb:

set :ssh_options, {
  config: false
  #Other options...
}

После этого я получил еще одну ошибку, Error reading response length from authentication socket. нашел решение для здесь. Выполните следующие команды в приглашении Bash:

$ eval $(ssh-agent)
$ ssh-add

Ответ 4

Модернизация версии net-ssh до версии 2.8.1 решит проблему. Они выпустили версию bump в 19 февраля 2014 года, которые исправляют эту и другие проблемы.

  • Удалить текущий чит net-ssh (gem install net-ssh -v 'version)
  • Просто вставьте это в свой Gemfile:

    gem 'net-ssh', '~ > 2.8.1',: git = > " https://github.com/net-ssh/net-ssh"

  • Запустите установку пакета

Ответ 5

У меня была такая же проблема при развертывании с использованием capistrano Net:: SSH:: AuthenticationFailed: Ошибка аутентификации для пользовательского развертывателя @IP

ssh-copy-id deployer @ip

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

Ответ 6

Этот фрагмент работает для меня:

group :development do
  #.....
  gem 'capistrano', "~> 2.15"
  gem "net-ssh", "~> 2.7.0"
  #.....
end

Ответ 7

set :ssh_options, {
 verbose: :debug
}

... помогает много!

У меня возникла проблема с созданием открытых и закрытых ключей с puttygen и экспортированным закрытым ключом как OpenSSH с именем <somename>.id_rsa. Затем сохраненный открытый ключ с именем <somename>.id_rsa.pub.

(!) Открытый ключ puttygen сохраняет в формате RFC 4716, а не PEM. Используйте суффикс public вместо pub для открытого ключа -

Ответ 8

Сначала попробуйте подключиться к серверу с помощью сертификата (file.pem) с помощью этой команды:

ssh -i "file.pem" [email protected]

Затем попробуйте запустить развертывание cap. Он решил ошибку для меня. Я думаю, что это связано с тем, что срок действия сертификата истек.

Ответ 9

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