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'но я все еще сталкиваюсь с той же ошибкой.

Другие вопросы по тегам