如何讓 ssh 只使用 ssh-agent 中的一個金鑰?

如何讓 ssh 只使用 ssh-agent 中的一個金鑰?

連接到同一台主機時,我需要使用兩個不同的 ssh 密鑰。

我需要用來連接的機器(因為IP位址限制)不是儲存ssh密鑰的機器,所以我在這裡使用ssh-agent。此外,這些 ssh 連線是在中間電腦上執行的腳本的控制下發生的。

如果ssh 金鑰位於該電腦的本地,我想我可以使用ssh -i (或可能是嵌套代理中的ssh-add )來指定我想要使用的身份,並且我可以將腳本和/或腳本上下文更新為為我的案例做正確的事情(可能使用設定檔來指定相關詳細資訊)。

但是,由於金鑰不在執行 ssh 連線的電腦上,因此 ssh -i 失敗(該電腦上不存在私鑰檔案)。同樣,ssh-add 希望我透過提供私鑰的檔案名稱來指定金鑰。 (或者我懷疑情況確實如此 - 我實際上還沒有弄清楚如何嵌套 ssh-agents,但 ssh-add 上的文檔懷疑這是否是一種可行的方法。)

所以我的問題是:如何讓 ssh 在與目標系統聯繫時僅使用我指定的金鑰?

[當然,其他人也需要使用這些腳本,但這是我自己使用後可以解決的問題。

換句話說,我有這樣的情況:

$ ssh-add -l
2048 SHA256:A8PFww3boSTRe8sPvXDgir09KNVqu+JvWNw7/GLCiwM /home/account/.ssh/key1.pem (RSA)
2048 SHA256:Em5p4B++GIm0l/zDYgZ26VaHbIb07T6MViu5ioMPTiA /home/account/.ssh/key2_rsa (RSA)
4096 SHA256:JON2JaTTk1r3ufUrGm4C/cE9IG9edyfDxE1zTel/0u8 /home/account/.ssh/key3_rsa (RSA)

在一種情況下,我需要 ssh 來使用 key2_rsa,而在另一種情況下,我需要 ssh 來使用 key3_rsa

此處使用錯誤的金鑰會導致與目標系統的連線失敗(因為它將另一個金鑰識別為有權存取計算機,但無權存取該子系統)。

我該如何進行這項工作?

答案1

ssh -i也接受包含以下內容的文件民眾密鑰,如果在代理中找到匹配的密鑰,則會在其他所有操作之前嘗試它。

此外,如果-o IdentitiesOnly=yes指定,客戶端將使用僅有的如果該密鑰被拒絕,則不會回退到任何其他密鑰。 (請注意,回退到其他機制,例如 GSSAPI 或密碼,由不同的選項控制。

相關內容