使用來自 SSH-agent 的特定轉發密鑰?
假設我有一個 Github 的密鑰,以及其他密鑰。我已經
ssh-add -L
在我的家用電腦 A 上為我的 ssh 代理添加了很多密鑰(返回很多行)。.ssh/config
我已經設置了哪個密鑰與哪個主機一起使用,例如ssh -T -vvv git@github.com 2>&1 | grep Offering
給
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github
正如預期的那樣,只提供了一把鑰匙。但是然後使用 ssh-ing 到某個主機 B
ForwardAgent yes
並重複相同的命令,我得到了debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.linode2 debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.helium debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github
這意味著它會嘗試我所有的鑰匙。這是有問題的,因為在伺服器返回之前只能嘗試有限數量的密鑰
Too many authentication failures
。所以我嘗試.ssh/config
在主機 B 上進行編輯以包括Host github.com IdentityFile /Users/doxna/.ssh/id_rsa.github IdentitiesOnly yes
但後來我沒有得到任何關鍵產品,而是
debug2: key: /Users/doxna/.ssh/id_rsa.github ((nil))
我猜這意味著找不到密鑰(?)畢竟,密鑰位於我家的電腦 A,而不是主機 B,所以問題是如何在主機 B 上引用它?希望我設法解釋了這個問題。
你有正確的想法。您唯一缺少的部分是指向的文件
IdentityFile
必須存在。它不需要包含私鑰,只有可用的公鑰就足夠了。在主機 B 上,您可以通過鍵入從代理中提取公鑰
ssh-add -L | grep /Users/doxna/.ssh/id_rsa.github > ~/.ssh/id_rsa.github.pub
,然後從~/.ssh/config
@Kasperd 的回答很好,但還要注意,如果主機 B 被入侵,或者如果您不信任那裡的所有具有 root 權限的人,那麼只要您登錄,您仍然會將所有密鑰暴露給濫用在那個主機上。
因此,更好的方法可能是只轉發對您需要的密鑰的訪問。也許試試
ssh-agent-filter
debian / Ubuntu 儲存庫中的哪個,或者來自github。編輯:我已經決定
ssh-ident
而不是ssh-agent-filter
選擇性地轉發密鑰,儘管它並不像人們希望的那樣順利。