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)



Я полностью в недоумении. Есть идеи?

727   9  

9 ответов:

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

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

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

ответ может сломать ваше приложение rails из-за зависимости от драгоценного камня.

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

эти шаги исправили как Капистрано, так и рельсы для меня ...

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

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

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

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

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

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

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

  1. удалить текущую нетто-СШ Перл (жемчужина установите net-СШ -в 'Версия')
  2. просто вставьте это в свой Gemfile:

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

  3. запустить пакет install

У меня была такая же проблема при развертывании с помощью capistrano Объем::СШ::AuthenticationFailed: не удалось выполнить проверку подлинности для развертывания пользователя@ИС

ssh-copy-id deployer@ip

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

этот код работает для меня:

group :development do
  #.....
  gem 'capistrano', "~> 2.15"
  gem "net-ssh", "~> 2.7.0"
  #.....
end
set :ssh_options, {
 verbose: :debug
}

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

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

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

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

ssh -i "file.pem" user@yourServerIp

затем попробуйте запустить Cap production deploy. Это решило ошибку для меня. Я думаю, что это потому, что срок действия сертификата истек.

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

Comments

    Ничего не найдено.