如何透過 ssh 在 Windows 上遠端啟動 VMWare 機器或任何其他程式?

如何透過 ssh 在 Windows 上遠端啟動 VMWare 機器或任何其他程式?

我有一台不錯的 8 核心 Windows 7 機器,我在 VMWare Workstation 中部署了多個虛擬機器。我希望能夠透過執行“vmrun -T ws H:\VMWare\VM1\VM1.vmx nogui”之類的命令來遠端啟動虛擬機器。我可以假設,主機中始終有一個用戶登錄,並且始終是同一用戶。

該命令在本地運行良好,但問題是當我嘗試遠端運行它時。

使用 cygwin 的 ssh 來做到這一點是不可能的,因為不知何故 vmrun 需要訪問本地螢幕,據我所知,這在 cygwin 的 ssh 中是不可能的,因為它作為 Windows 服務運行。我知道,我可能會編寫一對應用程式來規避該問題,一個在用戶登入時啟動,另一個由遠端用戶調用,遠端用戶透過 IPC 向第一個應用程式發送命令。我有一種強烈的感覺,有人已經編寫了這樣的應用程序,所以我不需要浪費時間重新發明輪子。

我不認為依賴 Windows 憑證的其他通訊方式足夠安全,所以我不喜歡使用像 psexec 這樣的工具,它可以輕鬆地用 Rainbow Table 嗅探和解密(我沒有 Radius 伺服器)。或者也許我錯了,他們確實是安全的?

答案1

我一直透過使用 Cygwinssh將連接埠轉送至 3389 來執行此操作。的虛擬機,然後退出。

答案2

您可以使用以下命令輕鬆地遠端執行命令PsExec。當然,它依賴 Windows 身份驗證機制來運作。

答案3

最後我找到了最適合我的解決方案:

重點是將 sshd 作為 Windows 服務運行,但從使用者的個人啟動(可能作為隱藏視窗)運行。就這樣。這裡唯一的技巧是我需要將其作為提升的進程運行。

要在 Windows 7 中以互動方式啟動 cygwin sshd,需要執行下列步驟。 (我假設 cygwin 安裝到C:\cygwin,並且它包含該openssh軟體包):

  1. 將管理工具\服務小程式中的服務設定sshd為“手動啟動”或“停用”
  2. C:\cygwin\var\empty取得資料夾的所有權
  3. (可選 - 用於偵錯)確保當您/usr/bin/sshd -D在提升的 cygwin 提示字元下運行時,您可以透過 ssh 存取您的主機。
  4. (可選 - 用於偵錯)確保當您從提升的命令提示字元啟動時,C:\cygwin\bin\run -p C:\cygwin\bin /usr/sbin/sshd -D您仍然獲得與第 3 點相同的存取權限sshd.exe
  5. 建立新任務,在您登入後立即在提升的憑證下啟動此命令。看這個論壇主題看看如何做到這一點
  6. 從遠端主機使用 ssh 登入並vmrun -T ws start ...像在本地一樣運行命令,一切都會按預期進行。

我希望它對那些喜歡堅持使用 ssh 授權來執行管理任務的人有所幫助。

請注意,要使其工作,用戶需要實際登入主機(我認為最好以互動方式進行(即不是透過 rdp),但我尚未測試此理論),因此此解決方案最適合家庭/小型辦公室網絡,也許它不適合專用伺服器,除非您將其配置為「自動登入」(但自動登入本身有安全性問題,這很容易抵消停用$ADMIN 共享的好處)

相關內容