1. 程式人生 > >fatal: the remote end hung up unexpectedly (curl 56 OpenSSL SSL_read:SSL_ERROR_sysCALL)

fatal: the remote end hung up unexpectedly (curl 56 OpenSSL SSL_read:SSL_ERROR_sysCALL)

出現類似上述錯誤,網上找到的大量解決方案如下:

git config http.postBuffer 524288000
  • 1
  • 2

在git bash上執行上述程式碼就可以,目的是增加快取空間到500M. 
其實兩種錯誤最後都是失敗,但提示是不同的:

Counting objects: 56, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (29/29), done.
Writing objects: 100% (29/29), 67.82 KiB | 0 bytes/s, done.
Total 29 (delta 20), reused 0 (delta 0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

errorRPC failed; result=55, HTTP code = 200

    fatal: The remote end hung up unexpectedly
    fatal: The remote end hung up unexpectedly
    Everything up-to-date
  • 1
  • 2
  • 3
  • 4

如果是上面的錯誤提示,就可以使用上述方法解決(原則上是這樣,也有可能有其他錯誤,你懂的),但另一種情況是,紅字的部分被類似如下的錯誤提示代替:

curl 56 OpenSSL SSL_read:SSL_ERROR_sysCALL
  • 1
  • 2

這就是:

SSL錯誤

因為伺服器的SSL證書沒有經過第三方機構的簽署,所以才報錯。解決方案如下: 
第一步,克隆遠端倉庫時,用env命令設定GIT_SSL_NO_VERIFY環境變數為”ture”,並同時呼叫正常的git clone命令。完整的命令如下:

env GIT_SSL_NO_VERIFY=true git clone https://<host_name/git/project.git
  • 1
  • 2

第二步,在克隆完畢的倉庫中將http.sslVerify設定為”false”。完整的命令如下:

git config http.sslVerify "false"
  • 1
  • 2

點評:以上方法應該是Git處理可信任的SSL臨時證書很好的方法,第一步使用env命令保證了忽略證書錯誤是單次行為,不會成為預設的設定。第二次,則把忽略證書錯誤的設定限定在特定的倉庫,避免擴大該設定的適用範圍而引起的潛在安全風險。

PS:我的目的是想傳一些大檔案到github上,要是用大檔案儲存也就是LFS(large file storage),我一直以為是大檔案的問題或者是網路的問題(因為可能需要翻牆),想不到最後是證書認證的問題,查詢問題還是要一絲不苟

啊!