由于与 OpenSSL 3.0 不兼容,Capistrano 无法部署 Rails 应用程序

Ald*_*ldo 22 ruby openssl capistrano ruby-on-rails ubuntu-22.04

我有一个支持 Rails 7 和 Ruby 3 的 Rails 应用程序,它在我的带有 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
Run Code Online (Sandbox Code Playgroud)

Capistrano 似乎与 Ubuntu 22.04 中默认的 OpenSSL 库 OpenSSL 3.0 不兼容。我猜这是一个错误,但我没有找到任何报告它的帖子。我也没有找到任何解决方法。

我尝试通过安装 OpenSSL 1.1.1 来解决该问题,但 Rails 应用程序仍然使用 OpenSSL 3。也许解决方案是使用 --with-openssl-dir 选项重新安装带有 OpenSSL 1.1.1 的 ruby​​ 3。

有什么建议吗?

Ald*_*ldo 32

报告的错误是由于rails net-ssh gem 不支持OpenSSL 3.0 造成的。

幸运的是,昨天发布了新版本的 net-ssh gem,提供了 OpenSSL 3.0 支持,从而解决了该问题。

基本上,添加

gem 'net-ssh', '7.0.0.beta1'
Run Code Online (Sandbox Code Playgroud)

并运行捆绑安装解决了这个问题。

  • 祝福你,真是一个发现。你是怎么想到这一点的? (3认同)