我背后是一个很烦人的公司代理人:
在这种情况下如何成功克隆github仓库?
第一个问题并没有真正与git相关 – 更重要的是它能够真正配置代理是一个必要的步骤。
在Windows计算机上的代理配置可以在控制面板 – > Internet选项 – >连接 – > LAN设置中找到。
如果选中“使用自动配置脚本”,则首先需要下载指定的文件并将其打开。 我得到一个包含一个小脚本的文件。 它看起来像这样:
function FindProxyForURL(url, host) { var myip = myIpAddress(); var hostip = dnsResolve(host); if (isInNet(hostip,"192.168.0.0","255.255.0.0")) return "DIRECT"; if (isInNet(hostip,"xyz.abc.0.0","255.255.0.0")) return PROXY special-proxy:8080; return "PROXY default-proxy:8080"; }
所以,就我而言,要使用的代理是default-proxy:8080
。
要真正让git使用代理,我必须使用git config --global http.proxy http://<domain>\<username>:<password>@default-proxy:8080
。
这个明显的缺点是你将把你的域名密码保存为硬盘上的纯文本。
其他设置不起作用,虽然不同的消息来源声称他们应该。 那些是:
https_proxy
或http_proxy
为http://<domain>\<username>:<password>@default-proxy:8080
git config --global https.proxy http://<domain>\<username>:<password>@default-proxy:8080
http_proxy
设置为http://<domain>\<username>:<password>@default-proxy:8080
为了解决第三个问题,最简单的可能是通过设置一个环境变量来忽略证书错误 – 无论如何,代理返回的证书是不值得的:
set GIT_SSL_NO_VERIFY=true
为了不将简单密码存储在git配置中,可以使用本地代理,例如cntlm 。
它允许存储密码散列。 要获得散列,请使用以下命令:
cntlm.exe -H -d <domain> -u <username>
之后,系统会提示您输入密码。 结果将是一个三个哈希列表,其中PassNTLMv2
最有可能是在这种情况下相关的一个。 将cntlm.ini中的Password
行替换为输出中的行,包括PassNTLMv2
部分。
显然,你必须现在配置git来使用这个本地代理。
如果你还想写访问github你将不得不能够通过代理ssh访问github。 要做到这一点,你可以使用corkscrew
。
总之这是你如何做到这一点:
首先打开开瓶器
然后在~/.ssh/proxy_auth
创建一个包含<proxy_username>:<proxy_password>
现在告诉ssh使用github.com
通过代理加入~/.ssh/config
来访问github.com
:
host github.com port 22 proxycommand corkscrew <proxy_ip_address> <proxy_port> %h %p ~/.ssh/myauth
现在测试ssh是否可以通过ssh -T git@github.com
通过代理。 如果这样做, git:/
协议也应该能够通过代理。