vagrant ssh 由于 OpenSSL 版本不匹配而失败

vagrant ssh 由于 OpenSSL 版本不匹配而失败

我一直在排查 Vagrant 的问题,

$ vagrant ssh
OpenSSL version mismatch. Built against 100020ef, you have 1000106f
$

但是如果我手动构建相应的 ssh 命令并使用 提供的参数,vagrant ssh-config则会成功(或者如果我这样做,则会提供这些参数vagrant ssh --debug:它尝试连接之前的最后一行包含它使用的所有参数)。更令人费解的是,OpenSSH 和 OpenSSL 的版本在 Virtualbox 主机和客户端机器上匹配(不要被 ssh 和 OpenSSL 结果之间的 1.0.2n 和 1.1.1 差异所困扰,事实证明它们确实可以一起运行)- 关键是下面的命令在主机和客户端上给出相同的结果,

$ ssh -V
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017

$ openssl version
OpenSSL 1.1.1  11 Sep 2018

这是在 Mint 19.3 上 - 因此是基于 Ubuntu 18.04 的系统。

事实上我确实找到了答案,因此将其发布在下面,希望可以帮助您避免浪费太多时间追踪任何类似的问题。

答案1

(进一步测试后更新答案)

问题在于流浪二进制文件。

我使用 Oracle 打包版本的 Virtualbox (6.1) 使用他们的 repo(请参阅他们的 Virtualbox下载页面)而不是 Ubuntu 打包的版本(当前版本为 5.2);我从https://www.vagrantup.com/downloads(vagrant_2.2.14_linux_amd64.zip)因为 Ubuntu repo 版本的 Vagrant 不适用于 VirtualBox 6.1。

经过测试,我发现最新版本的 vagrant 无法在这种环境下运行(出现上述 OpenSSL 不匹配错误),但有些版本可以(版本 2.2.7 至 2.2.10):低于 2.2.7 的版本无法与 Virtualbox 6.1 配合使用;高于 2.2.10 的版本会出现上述 OpenSSL 版本不匹配错误。

因此,有两种可能的解决方案(我都尝试过了;都有效):

  • 降级 Virtualbox,坚持使用 Ubuntu 打包的 Virtualbox 和 vagrant 版本(以及任何 vagrant 附加组件;在我的情况下是 vagrant-cachier)(如果是这样,请确保彻底清除较新版本的 Virtualbox 和 Vagrant)
  • 或者继续使用 Virtualbox 6.1 但安装一个可用的 vagrant 版本,2.2.10 是最新兼容版本;可以在这里找到它:下载旧版本的 Vagrant

关于安装 vagrant,我sudo apt remove vagrant在下载和解压之前删除了较旧的 Ubuntu 打包的 vagrant(),尽管如果您愿意,vagrant_2.2.10_linux_amd64.zip还有一个可用的;我把它放在可以在 上找到的位置,而不会被误认为是从 安装的二进制文件。.deb/usr/local/binPATH.deb

相关内容