在使用Mavericks的mac mini上,当我尝试从私有git服务器git clone时,我遇到了身份验证问题。我已经使用同一台服务器在Windows和Ubuntu上安装和配置了几次git,之前没有遇到过这种问题。我不知道下一步该尝试什么。
症状:
git clone https://username@git.example.com:8448/git/libs/project.git
Cloning into 'project' ...
Password for 'https://username@git.example.com:8448': [1] note
fatal: Authentication failed for 'https://username@git.example.com:8448/git/libs/project.git'
[1]我没有在其他系统上询问过这个问题。我相信我已经配置我的git客户端不要求密码。我提供的密码没有提供此提示
我在〜/ .gitconfig中有这个:
[http]
sslKey = /Users/macuser/auth/username.key
sslCert = /Users/macuser/auth/username.pem
sslVerify = false
[user]
name = username
email = username@example.com
我在设置客户端证书时收到以下文件,我将其放在名为〜/ auth的文件夹中:
username.cer
username.p12
username.pem
ca.cer
我运行此命令来生成密钥文件:
openssl rsa -in /Users/macuser/auth/username.pem -out /Users/macuser/auth/username.key
然后我运行了git config命令,例如:
git config --global http.sslKey /Users/macuser/auth/username.key
git config --global http.sslCert /Users/macuser/auth/username.pem
git config --global http.sslVerify false
在配置git之后就像上面的步骤一样,在我执行'git clone https'时在其他系统上它就可以了。在安装了Xcode命令行工具的OS X Mavericks上,git无法进行身份验证。
我做错了什么?
提前致谢。
修改
我以为我会添加这条信息。服务器使用的是自签名证书,或者来自无权限的证书。这就是我将http.sslVerify设置为false的原因。
以下是详细的克隆命令。除了auth文件夹位置外,Linux和Mac上的设置是相同的。 Linux版本成功,而Mac版本失败。
http://cache.codebot.org/stackoverflow/linux-git-works.txt
http://cache.codebot.org/stackoverflow/mac-git-fails.txt
答案:
sudo port install git-core
答案 0 :(得分:1)
解决方案是使用git的macports版本而不是使用Xcode命令行工具附带的版本。
sudo port install git-core
答案 1 :(得分:0)
sslVerify false
?然后通过curl完全停用证书验证。
您可以通过以下方式获得更多详细信息:
GIT_CURL_VERBOSE=1 git clone https://...
检查其他系统是否没有%HOME%/_netrc
(Windows)或~/.netrc
(unix),其中包含您的凭据,这可以解释为什么您不必在那里输入密码
在您的情况下,/etc/ssl/certs/ca-certificates.crt
中的CA和其他根证书可能在mac上不存在。<path/to/git/bin/curl-ca-bundle.crt>
。
尝试将该Linux文件的内容添加到 sudo port install git-core
文件的客户端git cert文件中,有点像this solution。
OP sysrpl报告虽然没有必要,因为sysrpl必须执行以下操作:
{{1}}
更新/重置Mac上的git安装。
答案 2 :(得分:0)
当您尝试使用 git clone 并且提示输入密码时,请在此处提供 git 个人访问令牌
这将解决问题。