Ssh

使用來自 SSH-agent 的特定轉發密鑰?

  • August 29, 2019

假設我有一個 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 到某個主機 BForwardAgent 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-filterdebian / Ubuntu 儲存庫中的哪個,或者來自github

編輯:我已經決定ssh-ident而不是ssh-agent-filter選擇性地轉發密鑰,儘管它並不像人們希望的那樣順利。

引用自:https://serverfault.com/questions/599560