在 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.dll
而openssl.exe
依赖于该库,并且msys-ssl-X.Y.Z.dll
这些X.Y.Z
部分匹配(在我的情况下为“0.9.8”)。这些库与所讨论的可执行文件位于同一目录中:{gitInstallDir}/bin
。
据我所知,在构建 GfW 时,构建套件会提取并构建 OpenSSL 的一个副本,因此预期结果openssl.exe
和ssh.exe
结果都将使用 OpenSSL 提供的同一组库。因此我感觉到某种%PATH%
优先问题。
我要检查的内容:
跑步
type -a openssl
和
type -a ssh
在 Git Bash 提示符中,查看它们是否都返回以“/bin/”前缀开头的内容作为其各自输出的第一个(或唯一)条目。如果您看到其他内容,如“/c/whatever/other/path/openssl”,则
openssl.exe
由于您的 ,您比 Git for Windows 的副本更早拥有该程序的另一个实例%PATH%
;这同样适用于ssh.exe
。如果是,请修复 的内容
%PATH%
。获取副本
depends.exe
ssh.exe
并在 GfW 安装中运行它,openssl.exe
以查看它们链接到哪些库以及这些库位于何处。如果出现问题,这可能会给你提供线索,让你知道在哪里查找。
1它不是“msysGit”,而是“Git for Windows”:“msysGit”是一个非常古老的项目名称,长期以来一直用于指代开发环境适用于 Windows 的 Git,而后一个术语用于指代最终产品:Git 的 Windows 端口和您用于安装 GfW 的二进制安装程序。请坚持使用此术语,以免增加混淆。