當前位置:
首頁 > 最新 > Windows 上的 SSH?使用 PowerShell Remoting 遠程管理 Windows 伺服器

Windows 上的 SSH?使用 PowerShell Remoting 遠程管理 Windows 伺服器

在 Linux世界裡 SSH 是個好東西,SSH 是 Secure Shell 的縮寫,用它可以很容易連接到指定的伺服器,並執行特定命令行。除了支持遠程終端,作為一種安全的通信協議,還為很多其他工具的提供安全通信功能(比如 Git)。

在本文里,SSH 主要指代的是基於 SSH 通信協議構建的安全終端連接。SSH 遠程連接用起來非常簡單,下面就是一個 ssh 的示例:

指定伺服器地址,即可開啟連接——簡單到難以置信!然後,接下來的指令就是在目標機器上運行了。工作完成了,要斷開連接?照常一個 exit 命令即可終止會話,就像關閉一個終端一樣容易!

由於 SSH 本身是基於命令行環境的,所以如果要在一批遠程伺服器上執行任務也很容易,寫一個 for 語句,很輕鬆就能完成:

於是,很多人發現,批量管理 Linux 伺服器很輕鬆,即使沒有那些功能大而全的工具,只要有管理(使用)單台伺服器的經驗,再加上 ssh 就可以輕鬆管理一個集群了。如果希望伺服器能夠通過遠程管理,就需要在伺服器上安裝配置 openssh-server 了。這在 Linux 上基本也只是幾個命令也就輕鬆搞定了。一切都是如此美好!

Windows 世界的遠程管理

當類似的工作回到 Windows 上,人們首先想到的遠程管理的方式是遠程桌面連接,就是這個窗口:

遠程桌面連接(RDP)也是一個神器,只要知道網路地址(機器名稱),以及用戶名和密碼,就可以連接到任何一台 Windows 電腦上。連接建立之後,幾乎就像在操作本地電腦一樣地使用遠程電腦。 在實踐中我們發現,RDP 的表現相當不錯。即使在網路不好的情況下,也能有良好的性能;遠程操作的不光是桌面,還有剪貼板和音視頻等豐富的資源。另外,RDP 的客戶端也是很豐富,不但可以跨平台(包括 macOS、Linux 和手機平板電腦等),還有很多能同時連接多個電腦的工具。下面是在 Mac 上連接 Windows 伺服器的效果:

RDP 相比於 SSH,提供了更強大的圖形連接能力,本來是更強大的,但問題出在批量上。當我們要管理集群中的大量伺服器的時候,遠程桌面就無能為力了。當我們需要將一個操作,在多個伺服器上操作的時候,RDP 無法提供自動重複的能力。本質上,這不是 RDP 的問題,它是圖形界面的通病。

基於 WinRM 的 PowerShell Remoting

既然 Windows 上的圖形界面無法提供批量的遠程管理能力,那麼命令行界面呢? 等一等,Windows 的命令行界面?Windows 有命令行界面嗎? 大概不少人會有這樣的疑問。答案不言自明,Windows 不光內置有命令行系統,而且很強大。只是大部分人不怎麼用它而已。在早期,Windows 有命令提示符(cmd),後來 Windows 又添加了基於 .NET 的 PowerShell,大大強化了腳本化編程能力。

幸運的是,包括 PowerShell 的 Windows 的命令行體系提供了完善的遠程連接和批量執行的能力。與 SSH 類似,PowerShell Remoting 也只需要知道伺服器地址,就可以輕鬆連接;而要結束會話,也是一樣的 exit 命令:

另外,PowerShell 中不少命令還專門為遠程執行提供了優化,比如 Invoke-Command 等。下面的代碼查詢兩台遠程計算機的界面語言(代碼引自文檔):

輸出結果為:

PowerShell Remoting 是基於 Windows 內置的遠程管理技術 WinRM 提供的。如果希望 Windows 伺服器能夠通過遠程管理,需要在伺服器啟用 WinRM,並配置防火牆規則:


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 諾普博客 的精彩文章:

TAG:諾普博客 |