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