在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.exe和ssh.exe需要使用OpenSSL提供的同一套库。 因此我感觉到某种%PATH%优先问题。
我会检查什么:
跑
type -a openssl
和
type -a ssh
在你的Git Bash提示符下,看看它们是否都返回以“/ bin /”前缀开头的东西作为它们各自输出的第一个(或唯一的)input。 如果你看到其他的东西,比如“/ c / whatever / other / path / openssl”,你可以使用另外一个openssl.exe程序实例, 这同样适用于ssh.exe 。
如果是,请修复%PATH%的内容。
获取depends.exe的副本,并从GfW安装中针对ssh.exe和openssl.exe运行以查看它们链接到哪些库以及这些库的位置。 这可能会给你一个线索,看看哪里出现问题。
1这不是“msysGit”,而是“Git for Windows”:“msysGit”是这个项目的一个非常古老的名字,用了很长一段时间来指代Git for Windows的开发环境 ,而后一个术语用来指代最终产品:Git的Windows端口以及您用来安装GfW的二进制安装程序。 请坚持这个术语,不要增加混淆。