为什么openssl和ssh for Windows报告不同版本的OpenSSL?

在Windows Server 2008上,我安装了Git for Windows(Git-1.9.4-preview20140929)。

在bash shell中, openssl version报告0.9.8zb版本,但ssh -V报告Open SSL 1.0.1i

那么,哪一个版本能准确地反映在这个服务器上运行的JBoss中的SSL连接器(通过扭矩盒)所使用的OpenSSL版本?

为什么在同一版本的Git for Windows中提供的这两个工具没有匹配的OpenSSL版本?

我有一个过时的(1.8.X)安装Git for Windows 1,所以这可能不是最新的,但从我的安装中看到, ssh.exe (这是一个OpenSSH的构build)取决于msys-crypto-XYZdll while openssl.exe取决于该库和msys-ssl-XYZdll与这些XYZ部分匹配(在我的情况下“0.9.8”)。 这些库位于与所讨论的可执行文件相同的目录中: {gitInstallDir}/bin

AFAIK,在构buildGfW时,构build套件只能获取一个OpenSSL的副本,因此reslting openssl.exessh.exe需要使用OpenSSL提供的同一套库。 因此我感觉到某种%PATH%优先问题。

我会检查什么:

  1.  type -a openssl 

     type -a ssh 

    在你的Git Bash提示符下,看看它们是否都返回以“/ bin /”前缀开头的东西作为它们各自输出的第一个(或唯一的)input。 如果你看到其他的东西,比如“/ c / whatever / other / path / openssl”,你可以使用另外一个openssl.exe程序实例, 这同样适用于ssh.exe

    如果是,请修复%PATH%的内容。

  2. 获取depends.exe的副本,并从GfW安装中针对ssh.exeopenssl.exe运行以查看它们链接到哪些库以及这些库的位置。 这可能会给你一个线索,看看哪里出现问题。


1这不是“msysGit”,而是“Git for Windows”:“msysGit”是这个项目的一个非常古老的名字,用了很长一段时间来指代Git for Windows的开发环境 ,而后一个术语用来指代最终产品:Git的Windows端口以及您用来安装GfW的二进制安装程序。 请坚持这个术语,不要增加混淆。