Ssh

vagrant ssh 因 OpenSSL 版本不匹配而失敗

  • March 19, 2021

我一直在解決 Vagrant 的問題,

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

但是如果我使用此提供的參數手動建構相應的 ssh 命令vagrant ssh-config成功(或者,如果我這樣做,則提供這些vagrant ssh --debug:嘗試連接之前的最後一行包含它使用的所有參數)。更令人費解的是,在 Virtualbox 主機和客戶端機器上,openssh 和 OpenSSL 的版本匹配(不要被 ssh 和 OpenSSL 結果之間的 1.0.2n 和 1.1.1 不同所拋出,事實證明這些確實起作用一起OK) - 關鍵是下面的命令在主機和客戶端上給出相同的結果,

$ 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 的系統上。

事實上,我確實找到了答案,因此將其發佈在下面,希望能幫助您避免浪費太多時間來追踪任何類似的問題。

(進一步測試後更新答案)

vagrant 二進製文件是問題所在。

我正在使用 Oracle 打包版本的 Virtualbox (6.1),使用他們的 repo(請參閱他們的 Virtualbox下載頁面)而不是 Ubuntu 打包版本(目前版本為 5.2);我從https://www.vagrantup.com/downloads (vagrant_2.2.14_linux_amd64.zip) 下載了一個新的 vagrant 二進製文件,因為 Vagrant 的 Ubuntu repo 版本不適用於 VirtualBox 6.1。

經過測試,我發現最新版本的 vagrant 在這種環境下不起作用(由於上面的 OpenSSL 不匹配錯誤而失敗),但有些可以(版本 2.2.7 到 2.2.10):低於 2.2.7 的版本不能使用 Virtualbox 6.1;高於 2.2.10 的版本會出現上述 OpenSSL 版本不匹配錯誤。

因此,兩種可能的解決方案是(我都嘗試過;兩者都有效):

  • 通過堅持使用 Ubuntu 打包版本的 Virtualbox 和 vagrant(以及任何 vagrant 附加組件;在我的情況下為 vagrant-cachier)來降級 Virtualbox(如果是,請確保徹底清除 Virtualbox 和 Vagrant 的較新版本)
  • 或者繼續使用 Virtualbox 6.1,但安裝一個工作的 vagrant 版本,2.2.10 是最新的兼容版本;在這裡找到它:下載舊版本的 Vagrant

關於。sudo apt remove vagrant安裝 vagrant,我在下載和解壓縮之前刪除了舊的 Ubuntu 打包的 vagrant ( ),但如果您願意,vagrant_2.2.10_linux_amd64.zip也可以使用;.deb我把它放在/usr/local/bin可以找到它的地方,PATH而不會被誤認為是從.deb.

引用自:https://serverfault.com/questions/1056554