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

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

在 Windows Server 2008 上,我安装了适用于 Windows 的 Git(Git-1.9.4-preview20140929)。

在 bash shell 中,openssl version报告版本0.9.8zb,但ssh -V报告 Open SSL1.0.1i

那么,哪个版本准确反映了此服务器上运行的 JBoss(通过 Torquebox)中的 SSL 连接器所使用的 OpenSSL 版本?

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

答案1

我有一个过时的(1.8.X)Git for Windows 1安装,因此这可能不是最新的,但从我在我的安装中看到的内容来看ssh.exe(这是 OpenSSH 的一个版本),依赖于msys-crypto-X.Y.Z.dllopenssl.exe依赖于该库,并且msys-ssl-X.Y.Z.dll这些X.Y.Z部分匹配(在我的情况下为“0.9.8”)。这些库与所讨论的可执行文件位于同一目录中:{gitInstallDir}/bin

据我所知,在构建 GfW 时,构建套件会提取并构建 OpenSSL 的一个副本,因此预期结果openssl.exessh.exe结果都将使用 OpenSSL 提供的同一组库。因此我感觉到某种%PATH%优先问题。

我要检查的内容:

  1. 跑步

    type -a openssl
    

    type -a ssh
    

    在 Git Bash 提示符中,查看它们是否都返回以“/bin/”前缀开头的内容作为其各自输出的第一个(或唯一)条目。如果您看到其他内容,如“/c/whatever/other/path/openssl”,则openssl.exe由于您的 ,您比 Git for Windows 的副本更早拥有该程序的另一个实例%PATH%;这同样适用于ssh.exe

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

  2. 获取副本depends.exessh.exe并在 GfW 安装中运行它,openssl.exe以查看它们链接到哪些库以及这些库位于何处。如果出现问题,这可能会给你提供线索,让你知道在哪里查找。


1它不是“msysGit”,而是“Git for Windows”:“msysGit”是一个非常古老的项目名称,长期以来一直用于指代开发环境适用于 Windows 的 Git,而后一个术语用于指代最终产品:Git 的 Windows 端口和您用于安装 GfW 的二进制安装程序。请坚持使用此术语,以免增加混淆。

相关内容