git clone提示:
fatal: early EOF
fatal: the remote end hung up unexpectedly
fatal: index-pack failed
error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
使用git clone 克隆遠程庫時,出現了上述錯誤,網上找了很長時間的解決方案,很多解答都是運行以下命令:
git config http.postBuffer 524288000
在 git bash
上運行上述代碼後仍未解決問題,因爲此命名的目的是增加緩存空間到500M,這是用於解決上傳大小限制的問題,但並不能解決我們遇到的問題。
error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
查看了很多博客,最終確定,這個問題是:
SSL錯誤
因爲服務器的SSL證書沒有經過第三方機構的簽署,所以才報錯。
解決方案如下:
第一步,克隆遠程倉庫時,用env命令設置GIT_SSL_NO_VERIFY環境變量爲”ture”,並同時調用正常的git clone命令。完整的命令如下:
env GIT_SSL_NO_VERIFY=true git clone https://<host_name/git/project.git
第二步,在克隆完畢的倉庫中將http.sslVerify設置爲”false”。完整的命令如下:
git config http.sslVerify "false"
點評:以上方法應該是Git處理可信任的SSL臨時證書很好的方法,第一步使用env命令保證了忽略證書錯誤是單次行爲,不會成爲默認的設置。第二次,則把忽略證書錯誤的設置限定在特定的倉庫,避免擴大該設置的適用範圍而引起的潛在安全風險。
PS:百度錯誤信息得到的結果很奇怪,可能是因爲錯誤信息長度的問題,查詢到的結果都是解決文件大小限制的,後來仔細解讀了一下錯誤信息才知道是證書的問題,查找問題之前一定要先做好準備工作。