- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
克隆我的 repo 有效;推回它不会。
第一次克隆失败:
git clone https://github.com/slimsnerdy/testy.git
Cloning into 'testy'...
fatal: unable to access 'https://github.com/slimsnerdy/testy.git/': SSL certificate problem: self signed certificate in
certificate chain
所以我在 .gitconfig
文件中添加了以下自定义证书:
[http]
sslCAInfo = U:/ca-bundle.crt
现在克隆有效:
Cloning into 'testy'...
remote: Counting objects: 25, done.
remote: Compressing objects: 100% (22/22), done.
remote: Total 25 (delta 8), reused 6 (delta 1), pack-reused 0
Unpacking objects: 100% (25/25), done.
好的,现在推送:
new-item test.txt
git add *
git commit -m "push test"
git push
Username for 'https://github.com': slimsnerdy
Password for 'https://slimsnerdy@github.com':
remote: Anonymous access to slimsnerdy/testy.git denied.
fatal: Authentication failed for 'https://github.com/slimsnerdy/testy.git/'
当我尝试使用我的手机通过个人火锅进行推送时(绕过公司防火墙),它推送正常。
为什么 clone
使用自定义证书而不是 push
?我想在不使用 ssh 的情况下解决这个问题。
最佳答案
贵公司的防火墙安装了一个代理man in the middle .为此,它会为您访问的站点创建证书,例如github.com。这些证书显然有不同的颁发者(您公司的内部 CA),默认情况下 git 客户端不会信任它们。关闭 sslVerify
会强制 git 客户端接受来自任何颁发者的任何证书。这是潜在的危险。您最初的方法是将您公司的 CA 添加到 git 客户端信任的发行者列表中,恕我直言,这是允许您的 git 客户端从您公司的防火墙后面与 github.com 对话的更好方法。
那么为什么这个设置不允许您推送
?到目前为止,其他张贴者忽略的是,本例中的错误不是 SSL 错误。只有您的客户才能看到您公司的证书。如果解决了,那就解决了。 Github 没有看到这个证书。因此,任何进一步调整 SSL 设置都无济于事。
就我第一次看到 SSL 自签名证书问题而言,我可以重现您的案例,当我将代理的证书添加到 sslCAInfo
时该问题消失了。坏消息:我无法重现身份验证失败错误。推送到 github 就成功了。好消息:可以从类似于您的设置推送到 github。
如果不是SSL的问题,那么只能是代理问题了。因为代理向客户端提供自己的证书,所以它能够解密 SSL 流量并对交换的数据进行深入检查。代理确实有权禁用某些命令,限制对特定站点的访问或从请求中删除用户名/密码。
请与贵公司的 IT 安全人员交谈。他们应该能够澄清代理是否对 github 或某些 git 命令施加了访问限制。
更新
通过 Fiddler 路由 git web 流量可以按如下方式完成(从命令行使用 git):
-c http.sslVerify=false -c http.proxy=127.0.0.1:8888
到 git 命令。例子:
$ git -c http.sslVerify=false -c http.proxy=127.0.0.1:8888 push
在 Fiddler 中,您现在应该看到如下内容:
2 200 HTTP Tunnel to github.com:443 0 git-remote-https:6512
3 401 HTTPS github.com /xxx/xxxx.git/info/refs?service=git-receive-pack [...]
4 200 HTTPS github.com /xxx/xxxx.git/info/refs?service=git-receive-pack [...]
或者,使用“简洁摘要”(Ctrl/Shift/T) 导出:
CONNECT http://github.com:443
200 Connection Established ()
GET https://github.com/xxx/xxxx.git/info/refs?service=git-receive-pack
401 Authorization Required (text/plain)
GET https://github.com/xxx/xxxx.git/info/refs?service=git-receive-pack
200 OK (application/x-git-receive-pack-advertisement)
在 Fiddler Web 调试器的右侧 Pane 中,您可以进一步调查交换的数据。特别是对于上面显示的三个请求中的最后一个,您应该在“ header ”选项卡中看到类似这样的内容:
GET /xxx/xxxx/info/refs?service=git-receive-pack HTTP/1.1
Host: github.com
Authorization: Basic XyzzY1337qQ=
User-Agent: git/2.13.0.windows.1
Accept: */*
Accept-Encoding: gzip
Pragma: no-cache
这样你就可以证明你的客户确实发送了授权信息。如果没有,我会对结果非常感兴趣。
关于git clone 工作但在替换防火墙后面的 SSL 证书后推送不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50493545/
我想对一个字符串执行搜索和替换,比如 password。 正如您从问题中了解到的那样,替换后的字符串应变为 sdvvzrug。 但不幸的是,下面的代码输出bbbbcaab: $search = ran
我正在使用 futurize --stage2它应用了许多源代码转换以使代码 python2 和 python3 兼容。其中一个修复是所有分区 a/b 都替换为 old_div(a/b),我想避免这种
我正在使用 RStudio,但我在控制台上的输出被截断了。我找不到如何停止截断(我尝试搜索 ?options 以及在谷歌上搜索的时间比我想承认的要长)。 编辑:我向大家道歉!我最初的长名称为“This
我有一个 fragment 堆栈,我在其中使用替换和相加。添加或替换我的 fragment 的代码(在我的 Activity 中)如下 private fun addFragment(fragment
我在一个数组中插入了一些字符串,但在我这样做之前,我想按照主题所说的去做。只用 %20 替换空格,我这样做: Name.push(linkText.replace(" ", "%20")); 但是我如
我正在尝试编译和测试我在网上看到的代码 Expanding an IP add 。但是,当我尝试编译它时,我收到有关 StringBuilder 替换方法的错误。它说: IPadd.java:52:
我正在尝试使用 dplyr 的最新功能重写我的部分代码,方法是将 data.frame() 替换为 data_frame() 和 cbind() 与 bind_cols(): library(rgeo
我最近偶然发现了 replace()和 "[ x.tst s.tst s.tst [,1] [,2] [,3] [1,] 0 0 0
我一直想知道,如何在给定的参数内进行替换。 如果你有这样的一行: 123,Hello,World,(I am, here), unknown 你想更换 World与 Foobar那么这是一个简单的任务
如何转义字符串中的双引号?例如, input: "Nobody" output: \"Nobody\" 我尝试过这样的操作,但不起作用: String name = "Nobody"; name.r
我正在做类似的事情: SQL sql sQl SqL var ps = document.getElementsByTagName('p'); for(var i = 0; i 但它不会替换文本。
我正在尝试用 \" 替换所有 " 并用 JSON 解析字符串,但浏览器抛出错误 SyntaxError: JSON Parse error: Unrecognized token '\'. 下面是代码
大家好,在这里挣扎...... 是否可以将第一个正斜杠之间的任何内容替换为“”,但保留其余部分? 例如var 将是 string "/anything-here-this-needs-to-be-re
在下面的代码中,JavaScript 替换函数中的 alert(a) 将提醒匹配的字符串,在本例中,将是 {name} 和 {place}。 这按照文档 javascript docs 的描述工作,即
+-----------------------------+ | tables | +-------------------
我正在尝试用\"替换包含 "的字符串,下面是我尝试过的程序 String s="\"/test /string\""; s = s.replaceAll("\"", "\\\"");
var text = "a's ..a's ...\"... "; text = convert(text); function convert( text ) { var n = text
我正在尝试使用 JavaScript 中的替换函数,但有一个问题。 strNewDdlVolCannRegion = strNewDdlVolCannRegion.replace(/_existing
好吧,首先我对我的上一篇文章感到非常抱歉,但我真的需要帮助,我会把我真正想要的东西放在一个更清晰的代码中。我不擅长 javascript,所以希望你能帮助我。
我正在写一张纸条,遇到了障碍。可能有更有效的方法来执行此操作,但我对 Python 还很陌生。我正在尝试创建用户生成的 IP 地址列表。我正在使用 print 来查看生成的值是否正确。当我运行此代码时
我是一名优秀的程序员,十分优秀!