我有兩臺電腦;我的作業站和我用來運行公司 VPN 的筆記本電腦。我需要通過 VPN 才能訪問我的 Git 遠程(BitBucket)。
我的作業站上運行著一個 SSH 代理,其中包含連接到 Git 遠程所需的 SSH 密鑰。我已將 SSH 配置為在連接到我的筆記本電腦時轉發我的 SSH 代理:
Host my-laptop
ForwardAgent yes
如果我使用 SSH 連接到我的筆記本電腦,我可以成功git pull,并ssh-agent -l確認 SSH 代理已正確轉發。到現在為止還挺好!
挑戰在于:我想直接從我的作業站使用 git。這應該是通過我的筆記本電腦配置 SSH 來代理的。我的 git 遙控器看起來像這樣:
? git remote -v
origin ssh://[email protected]:7999/my-team/my-project.git (fetch)
origin ssh://[email protected]:7999/my-team/my-project.git (push)
所以我添加了這個 SSH 配置:
Host *.my-company.com
ProxyJump my-laptop
代理跳轉起作用了,因為現在我到達了 Git 遙控器!??
但是,身份驗證失敗:
[email protected]:權限被拒絕(公鑰)。
致命:無法從遠程存盤庫讀取。請確保您擁有正確的訪問權限
并且存盤庫存在。
退出狀態 128
很明顯,代理命令時 SSH 代理轉發不起作用..?
我嘗試過的故障排除步驟:
使用 SSH 連接到筆記本電腦并運行
git pull- 它可以作業git pull直接從筆記本電腦運行- 它有效添加
IdentityFile并IdentitiesOnly強制使用正確的鍵,并沒有什么區別:Host *.my-company.com ProxyJump my-laptop IdentityFile ~/.ssh/[email protected] IdentitiesOnly yesForwardAgent yes在連接到 Git 遠程主機時添加,沒有任何區別:Host *.my-company.com ProxyJump my-laptop ForwardAgent yes IdentityFile ~/.ssh/[email protected] IdentitiesOnly yes
那么為什么在運行 git 命令時沒有使用我的本地 SSH 代理呢?
uj5u.com熱心網友回復:
事實證明,在這個設定中我什至不需要 SSH 代理轉發,因為 ProxyJump 設定設定了一個隧道,讓我的作業站“直接”與 git 遠程通信。
我收到“權限被拒絕(公鑰)”錯誤的原因是我的發行版(Arch)非常最新,并且默認情況下已經禁用了對“ssh-rsa”密鑰的支持。(在撰寫本文時,Arch linux 附帶了 openssh 8.8p1)
令人沮喪的是,我用“rsa-sha2-512”生成我的密鑰并不重要,這應該是安全的,我的 SSH 客戶端仍然沒有它。
但是,我使用 ed25519 生成了一個新密鑰,這解決了我的問題。
$ ssh-keygen -t ed25519
uj5u.com熱心網友回復:
在您的情況下,您不需要代理轉發,因為您不想將密鑰轉發到 bitbucket.my-company.com 服務器,您只想在那里進行身份驗證。
轉發中間代理擁有的密鑰是不可能的ForwardAgent。
您需要在作業站上使用正確的密鑰,但該密鑰似乎只存在于您的筆記本電腦上 ( Running git pull directly from the laptop - it works)。
- 您可以將私鑰從筆記本電腦復制到作業站
- 您可以在一個終端中將密鑰從筆記本電腦轉發到您的作業站,并在另一個終端中將該密鑰與 git 一起使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/319245.html
上一篇:Git:錯誤:即使在運行gitcommit-m之后,srcrefspecmaster也不匹配
下一篇:使用GUID的RSA加密和解密
