VM 中的 Openssh 使用主機上的 Pageant 進行驗證

VM 中的 Openssh 使用主機上的 Pageant 進行驗證

更新:看起來網路設計完全錯誤,身份驗證流程應該相反。所以這個問題現在已經沒有意義了。


目前設定:Windows 7 主機上的 Linux VM(假設常見且最新的 VM,如 CentOS 7.1 和 Ubuntu 15.04),使用 Virtualbox。

TL;DR 問題: 是否可以在虛擬機器內運行openssh不是使用本機 ssh-agent 進行金鑰驗證,但在 Windows 主機上使用 Peagent?更複雜的設定是可以接受的。

長問題:原來主機和虛擬機器上有多個金鑰副本——主機上有 Putty 格式的金鑰,虛擬機器上透過共用資料夾提供 openssh 金鑰格式,並且為了方便起見,其中許多都沒有密碼保護。但最近我覺得有必要鞏固它們並增加更多的保護。這些按鍵用於遠端管理和透過版本控制系統(主要是 Git)檢查原始程式碼。以下是要求:

  1. Windows主機可以ssh到遠端伺服器,並且可以透過ssh使用git。
  2. Linux VM可以透過ssh連接到遠端伺服器,並且可以透過ssh使用git。
  3. 密鑰僅儲存在主機上,而不儲存在虛擬機器上。 (這意味著這不會是 ssh 代理轉發設定)

第 1 點(允許 Windows 主機使用 pageant 進行驗證)相對簡單; git setup 本質上是設定正確的$GIT_SSH環境變數。不僅僅是 Putty,甚至 MinGW openssh 也可以透過將所有金鑰儲存在密碼管理器中(使用 KeePass 2.x)並匯出適合使用的套接字來連接到$SSH_AUTH_SOCKpageantKeeAgent 插件。看這個伺服器故障帖子另一種方法。

但到目前為止,還沒有透過 Linux 虛擬機器存取選美比賽。我嘗試過以下方法但失敗了

  • SSH 伺服器作為中間躍點安裝在 Windows 主機上(我正在嘗試莫巴什但選擇並不重要——請繼續閱讀)。
  • 然後嘗試plink.exe從虛擬機器內遠端執行。這類似於簡單的方法ssh host1 ssh host2,對於我的目的來說已經足夠了。
  • 然而,plink.exe 在 Windows SSH 伺服器中執行時無法存取任何金鑰。直接運行plink.exe就cmd可以了。大多數在 Windows 上運行的可用 SSH 伺服器都基於 Cygwin。看起來跟這個很相似putty/cygwin 組合錯誤報告

筆記:這裡可能有類似的問題,但我沒有使用 Vagrant。

答案1

看來原來的設計是完全錯誤的。在每個虛擬機器上開啟 sshd 伺服器會更乾淨

AllowAgentForwarding yes

然後透過 ssh 進入每個虛擬機器。這樣,所有虛擬機器都會自動使用主機的驗證代理,而無需安裝任何 ssh 金鑰。

相關內容