我有兩台機器 M1 和 M2,都運行 OS X,第三台機器 L,運行 Linux。 M1 和 M2 在鑰匙圈中解鎖了 RSA 金鑰,所以我可以:
- 從 M1 ssh 到 M2,無需輸入密碼或金鑰密碼
- 從 M2 ssh 到 L,無需輸入密碼或金鑰密碼
但是,當我從 M1 ssh 到 M2,然後再到 L(物理上仍在 M1 上)時,它會要求我提供密鑰的密碼!我嘗試過login.keychain
使用security
命令手動解鎖,但似乎沒有效果。
出了什麼問題?如何在不輸入任何密碼的情況下雙重 ssh?
答案1
鑰匙串完全正常工作,-A 的作用是將加載的密鑰從 M1 通過 M2 轉發到 L。過程並沒有發生及其所有副作用。
如果您想將代理程式轉送到 ssh 的任何位置,您應該建立檔案 ~/.ssh/config 並為 * 主機新增一個條目,並將 ForwardAgent 設為 yes:
Host *
ForwardAgent yes
此外,您可以透過將 * 替換為主機名稱來更具體地了解要將代理程式轉送到的主機。
答案2
您正在嘗試從 M2 登入 L。這意味著 M2 必須擁有您的憑證(金鑰和密碼)。但你的憑證實際上在 M1 上。
您可以將憑證複製到 M2,但隨後您必須與 M2 上的鑰匙圈進行互動。或者,您可以告訴 M2 聯絡 M1 上的鑰匙串,而不是 M2 上的鑰匙圈。這實際上是常用的方法,有些安裝可以開箱即用,但顯然不是您的。
使能夠代理轉發從M1到M2。在命令列上,使用 OpenSSH,傳遞-A
選項(即ssh -A M2
在 M1 上執行)。您也可以將該ForwardAgent
指令放入~/.ssh/config
.也許還有一種 GUI 方式可以在 OSX 上執行此操作。