這個查詢與 Git 沒有直接關係,但由於 Git 支援的傳輸之一是 SSH,並且我正在嘗試使用代理轉發,我想我會要求澄清(手冊頁讓我失望)
我正在嘗試使用 Capistrano 自動化軟體部署,我已經設法暫停了一些痛點(在部署之前預先播種已知主機等),但我遇到了以下情況。
我的團隊以個人用戶帳戶身份登入伺服器,每個人都在一個developers
群組中,並且umask
是002
.上述內容都不是真正相關的,只是說目的是確保我的團隊始終可以像他們自己一樣工作,而不需要超級使用者權限。
example.com
我們使用以下命令連接到伺服器~/.ssh/config
:
Host example.com
User beaks
ForwardAgent yes
IdentityFile ~/.ssh/id_rsa_business
初始登入工作正常,ssh example.com
打開了與我的用戶帳戶的連接,一切正常。
問題出現在下一步,
git ls-remote [email protected]:project/repository.git
這是使用前面提到的 Git+SSH 傳輸層(請參閱上面的連結) - 通常應該使用我的轉發代理金鑰(我已經使用 驗證過env | grep SSH_AUTH_SOCK
)
回應是一個簡單的“身份驗證失敗(公鑰),另一端意外掛斷”,我懷疑是因為當我github.com
作為他們的共享git
用戶接近時,我的用戶的代理沒有被使用。
我也不能排除EC2
奇怪的情況(安全策略等) - 但在這種情況下,我預計會出現逾時或連線失敗。我非常有信心我正在擊中github.com
- 而且他們不讓我進去,因為我的代理沒有beaks
為他們的用戶提供我的密鑰git
。
如果我遺漏了任何內容,很樂意添加任何其他資訊。
答案1
僅僅看到 ssh-agent 正在運行是不夠的。查看您想要的金鑰是否存在ssh-add -L
您是否已驗證此金鑰在其他主機上是否有效?ssh-add -L
該系統上列印什麼?
您也可以運行GIT_TRACE=1 git ls-remote ...
,它將列印它運行的 ssh 命令。您可以手動執行 ssh 命令並使其正常工作,然後再將 git 引入其中。
答案2
沒有人真正回答這個問題所以來這裡的人可能會受益於看到我對類似問題的回答。https://superuser.com/a/1141035/3376