我有一個私有 gitlab 實體,在嘗試通過 https 訪問它時需要客戶端身份驗證。因此,myserver.com只有在 Web 瀏覽器中安裝客戶端證書時,才能使用。這對于常規使用來說不是問題,因為我只通過 SSH 使用 git。
但是,git LFS 似乎只支持 HTTPS。因此,當我嘗試git push在使用 LFS 的專案中訪問我的服務器時,它只會嘗試使用 HTTPS 上傳,但顯然會失敗。但是,我收到一個似乎與客戶端身份驗證無關的奇怪錯誤,可能是 LFS 錯誤:
git push gitlab mybranch
Remote "gitlab" does not support the LFS locking API. Consider disabling it with:
$ git config lfs.https://git.myserver.com/coolguy/my-software.git/info/lfs.locksverify false
batch response: Post https://git.myserver.comcoolguy/my-software.git/info/lfs/objects/batch: dial tcp: lookup git.myserver.comcoolguy: no such host
batch response: Post https://git.myserver.comcoolguy/my-software.git/info/lfs/objects/batch: dial tcp: lookup git.myserver.comcoolguy: no such host
batch response: Post https://git.myserver.comcoolguy/my-software.git/info/lfs/objects/batch: dial tcp: lookup git.myserver.comcoolguy: no such host
batch response: Post https://git.myserver.comcoolguy/my-software.git/info/lfs/objects/batch: dial tcp: lookup git.myserver.comcoolguy: no such host
batch response: Post https://git.myserver.comcoolguy/my-software.git/info/lfs/objects/batch: dial tcp: lookup git.myserver.comcoolguy: no such host
batch response: Post https://git.myserver.comcoolguy/my-software.git/info/lfs/objects/batch: dial tcp: lookup git.myserver.comcoolguy: no such host
請注意它是如何將 URLgit.myserver.comcoolguy替換為git.myserver.com/coolguy或git.myserver.com:coolguy
這是我的遙控器的樣子:
git remote -v
gitlab [email protected]:coolguy/my-software (fetch)
gitlab [email protected]:coolguy/my-software (push)
這可能與客戶端身份驗證無關。如果我重寫遙控器以使用 HTTPS,則會出現以下更合理的錯誤:
git push gitlab mybranch
fatal: unable to access 'https://git.myserver.com/coolguy/my-software.git/': gnutls_handshake() failed: Handshake failed
除了修改 git 歷史記錄并創建一個沒有 LFS 的新倉庫(或重新配置我的服務器、使用 VPN 等)之外,在這種情況下我還能做些什么嗎?git/lfs 是否支持 HTTPS 身份驗證的客戶端證書?我目前在我的本地機器上被一個私人叉卡住了,我不能git push在任何地方!
謝謝
uj5u.com熱心網友回復:
Git LFS 最近剛剛在 3.0 中添加了對純基于 SSH 的協議的支持。但是,目前沒有主要的偽造支持它,因此您實際上僅限于通過 SSH 進行身份驗證,然后通過 HTTPS 進行操作。
當您使用這種方法時,遠程 URL 來自服務器通過 SSH。您可以從這個稍微修改的示例中看到這一點:
$ ssh [email protected] git-lfs-authenticate octocat/knife-sppon.git download
{
"href": "https://lfs.github.com/octocat/knife-spoon",
"header": {
"Authorization": "RemoteAuth SECRET"
},
"expires_at": "2021-10-15T01:34:57Z",
"expires_in": 599
}
如果那里的 URL 不正確,則可能是您的 URL 問題的原因。請注意,您可以通過GIT_TRACE=1在運行推送之前進行設定來查看通過 SSH 的確切呼叫,這將顯示 Git LFS 正在呼叫的內容。
Git LFS 確實支持 HTTPS 證書,就像 Git 一樣。選項http.sslCert和http.sslKey控制證書和密鑰,您可以使用http.sslCAInfo. 這些也可以基于每個 URL 或每個 URL 模式進行設定;git config --help有關更多詳細資訊,請參閱。
請注意,對于 Git LFS,密鑰和證書需要采用 PKCS#1 格式;您不能使用 PKCS#8 或 PKCS#12 格式,因為 Git LFS 使用的 Go TLS 庫無法以 Git LFS 需要的所有方式處理這些格式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/317336.html
