Capistrano не может развернуть приложение rails из-за несовместимости с OpenSSL 3.0
У меня есть приложение rails с поддержкой Rails 7 и Ruby 3, которое хорошо работает на моей машине разработки с Ubuntu 22.04, ruby 3.0.2p107 и Rails 7.0.2.3.
Теперь я пытаюсь настроить Capistrano (версия 3.17.0), чтобы развернуть приложение rails на сервере с Ubuntu 22.04. Однако я не могу этого сделать из-за следующей ошибки:
SSHKit::Runner::ExecuteError: Exception while executing as username@server: rsa#set_key= is incompatible with OpenSSL 3.0
Похоже, что Capistrano не совместим с OpenSSL 3.0, которая является библиотекой OpenSSL по умолчанию в Ubuntu 22.04. Я предполагаю, что это ошибка, но я не нашел сообщения, сообщающего об этом. Я тоже не нашел обходного пути.
Я попытался решить проблему, установив OpenSSL 1.1.1, но приложение rails по-прежнему использует OpenSSL 3. Возможно, решением может быть переустановка ruby 3 с OpenSSL 1.1.1 с использованием параметра --with-openssl-dir.
Любое предложение?
4 ответа
Сообщенная ошибка была связана с тем, что гем rails net-ssh не поддерживает OpenSSL 3.0.
К счастью, вчера была выпущена новая версия драгоценного камня net-ssh, обеспечивающая поддержку OpenSSL 3.0 и, следовательно, исправляющую проблему.
В принципе, добавление
gem 'net-ssh', '7.0.0.beta1'
и запуск установки пакета устранил проблему.
Мое временное решение — переустановить Ruby с [email protected], и это сработало.
rbenv uninstall 3.1.2
brew install openssl@1.1
RUBY_CONFIGURE_OPTS='--with-openssl-dir=/usr/local/opt/openssl@1.1' rbenv install 3.1.2
Чтобы проверить версию openssl:
ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
capistrano использовал мой ключ RSA от~/.ssh/id_rsa
.
Я переключился на использование файла pem, предоставленного AWS:
- Генерация открытого ключа из pem-файла
ssh-keygen -y -f in.pem > out.pub
- Редактировать
~/.ssh/authorized_keys
на сервере, чтобы добавить открытый ключ изout.pub
-
cap production deploy
:)
я устал добавлятьgem 'net-ssh', '7.0.0.beta1'
но я все еще сталкиваюсь с той же ошибкой.