2017年4月30日 星期日

[經驗分享]功能強大的集中式主機管理開源軟體



做為一個系統管理員,面對為數眾多的各種伺服器管理,如果沒有一套集中好用的遠端管理工具,難保不會在手忙腳亂之時出現意外,或者效率受到影響。

在此,推薦一套我已使用多年的好東西給大家參考,以 Windows 遠端桌面管理為主,搭配其它系統之管理方式。




主要需求


在企業裡面,我伺服器用到的有 Windows、Linux、FreeBSD。

在 Windows 領域,最好用的還是 RDP 遠端桌面,不僅系統直接內建,而且連線效率優異,即便在網路品質不佳時仍然表現出色,是遠端管理的不二選擇。

在 Linux/FreeBSD 系統,伺服器端以文字模式為主,所以 ssh 大量使用,其它則搭配一些 web 管理介面為輔,即可掌控一切。


「遠端桌面」



「Putty」



「VNC」



不過,問題來了。

這麼多不同平台的系統,當數量不多時每次手動連接倒還好處理,若達到一定程度再這樣做真的會搞死人。



集中式遠端桌面管理軟體


早期為了簡化管理,開始找到幾套可以集中管理的免費軟體,尤其是遠端桌面。



RDCMan



微軟有提供一款 RDCMan (Remote Desktop Connection Manager) 工具,可以提供方便的遠端桌面集中管理方案。





更多的集中式管理軟體


除了遠端桌面以外,如果也要集中使用其它方式連線,則有其它免費方案可以參考。


Royal TS







這兩套都是功能豐富的集中式管理工具,除了遠端桌面以外,還可以連接 Telnet、SSH、VNC 等模式,系統管理員最常用的幾種模式,一網打盡。




開源的集中式管理軟體


老議題,雖然有了極為好用的免費版軟體,但因為個人的偏執所致,我還是想再試著找找看開源方案。



mRemoteNG


果然,就有這麼一款非常優秀的開源軟體「mRemoteNG」,幾乎我需要的功能都有,也具備左側資料夾分類、上方頁籤分類等多種方便使用的設計,多個願望一次滿足。




基本功能


除了可以遠端桌面以外,其它 IT 管理者常用的功能均已內建,例如我們可以使用 SSH 協定連接 Linux、FreeBSD 等主機,也能使用 HTTP/HTTPS 協定進入網頁管理介面,整合在同一個入口,非常方便。


使用 SSH 連接 FreeBSD 管理



使用 HTTP 連接 Vigor Router 管理



使用 HTTP 連接 FreeNAS 管理



內建多種連接方式



進階設定


為了解決眾多主機的不同帳號密碼問題,mRemoteNG 提供了預先針對每一部主機設置帳號密碼的功能。

若是有許多主機採用相同的設置,只要該主機的帳號密碼留空,即可套用全域通用的帳號密碼,減少設定的負擔。


全域登入驗證設定




另一種方式,在連線清單裡建立資料夾後,在資料夾的節點設定協定、帳號、密碼等,再讓下面的各個主機繼承即可,可以針對不同協定類型的主機一次調整,亦是方便。

先點選左側樹狀清單中的主機,再點選組態視窗中的 [繼承] 按鈕,即可切換到設定頁。

繼承上層節點設定





資料保護


也因為如此,mRemoteNG 應運而支援了設定檔加密功能,以避免帳號密碼外洩。


設定檔加密儲存




如果要讓多人共用設定,或是想要集中儲存設定檔,可以採用儲存在資料庫的方式。

集中儲存設定於資料庫



或是參考我的作法,使用 mRemoteNG 可攜版,並透過資料夾同步(如 Synology Cloud Station、Dropbox、NextCloud 之類的套件)達成效果。




強化機能


如果上述的功能仍然無法滿足你的話,mRemoteNG 還有一招讓它的功能無限擴充。

自訂外部工具




透過 mRemoteNG 提供的「外部工具」功能,定義好名稱、檔案位置、參數,即可支援更多的管理能力,例如常用的網路檢測小工具等等。


呼叫外部工具選單



呼叫 ping 檢測主機狀態



呼叫 psexec 進入遠端主機的 cmd 命令提示字元



定義方式:

  • [檔案名稱]
    外部工具執行檔的位置,若無全域系統路徑變數,需指明。
       
  • [引數]
    要傳遞給外部工具程式的參數,可以搭配變數一起使用,如果是呼叫命令列下的程式,建議統一用 cmd.exe 搭配 /c 後接目標程式來執行,如「/c ping -t 127.0.0.1 」
       
  • [等待結束]
    某些必需等待外部工具結束才可以做下一件事的程式,需要勾選此項。要注意若該程式執行後不會主動結束者請勿選取。
       
  • [嘗試整合]
    若想要讓程式整合進 mRemoteNG 右方的視窗裡,如 putty 的模式,您可以勾選看看,不過據我所試除了 putty 與 filezilla 外,其它成功的較少,包括 cmd.exe。



可用變數:

  • %NAME%
  • %HOSTNAME% 👈  這最常用啦
  • %PORT%
  • %USERNAME%
  • %PASSWORD%
  • %DOMAIN%
  • %DESCRIPTION%
  • %MACADDRESS% 
  • %USERFIELD%



幾個外部工具設定範例:

  • [ping] 檢測目標主機連線狀態
    檔案:cmd.exe
    引數:/c ping -t %HOSTNAME%
       
  • [traceroute] 檢測目標主機路由
    檔案:cmd.exe
    引數:/c set /p = | tracert %HOSTNAME%
        
  • [psexec] 進入目標主機命令提示字元  👈  這招我超級愛用
    檔案:psexec.exe
    引數:\\%HOSTNAME -u %USERNAME% -p cmd.exe
        
  • [psloggedon] 查看目標主機已登入使用者清單
    檔案:cmd.exe
    引數:/c set /p = | psloggedon.exe \\%HOSTNAME%
        
  • [ultravnc] 進入目標主機遠端搖控 (使用 MS Logon 認證)
    檔案:vncviewer.exe
    引數:%HOSTNAME%:%PORT% /user %USERNAME /password %PASSWORD%
        
  • [compmgmt] 進入目標主機的電腦管理
    檔案:compmgmt.msc
    引數:/computer=%HOSTNAME%  
        
  • [filezilla] 進入對方主機做檔案管理  (使用免安裝版放一起)
    檔案:./FileZillaPortable/filezilla.exe
    引數:sftp://%Username%:%!password%@%Hostname%:%Port%



參考資料






快速匯入


看完上面各種強大功能,以及自訂外部工具的擴充機制,相信您應該正著手把所有的主機都納進來 mRemoteNG 進行管理。

當您開始做著主機一筆一筆設定的時候,漸漸的會感到痛苦(是的,我也是),該怎麼辦呢?

它也設想到了,提供了多種批次匯入主機清單的功能,從功能表 [檔案] -> [Import] 展開:

  • 從 File 匯入
  • 從 Active Directory 匯入
  • 從 Port Scan 匯入



其中我最喜歡用的是「從 Active Directory 匯入」,只要選好 OU 節點,一次連著 OU 結構一起匯入,非常方便!


從 Active Directory 匯入主機清單




取用保護

(本節於 2017/05/03 增加)

看到這裡,肯定您已經建立了一大票主機的資訊跟帳號密碼,有沒有想到缺了什麼?

如果您設定好的 mRemoteNG 整個資料夾都被人偷走,呃.........
那也就是說,他可以直接存取您所有設定在 mRemoteNG 裡的所有主機 💀💀💀

別擔心!幸好 mRemoteNG 也想到了,這太貼心啦。


設定取用保護密碼



請在左側連線面版裡,點選根節點 [連線],再選取組態視窗裡的 [密碼保護],切換成 [是],再輸入要用來保護的密碼即可。



啟動程式要求輸入密碼



下次再啟動程式時,就會被要求輸入密碼才可以使用,即可保護您的 mRemoteNG,如果還要更進一步的保護,請期待我近期要撰寫的 VeraCrypt 套件文章!



原始程式


mRemoteNG 功能眾多,但如果您覺得還是不夠,或是想要研究這麼強大的工具是怎麼開發來的:「它山之石,可以攻錯」

mRemoteNG 提供了完整的原始程式碼,您可以實現「自己的工具自己改」理想。

在好幾個版本以前,我有遇到一個會導致崩潰的奇怪的問題,同時也想研究它的 VNC 機制如何實作,當時有下載它的程式碼進行研究。

mRemoteNG 原始程式碼



mRemoteNG 採用 .NET 平台 C# 語言開發,對於有過 WinForm 經驗的開發者將會相當容易上手。





結論


mRemoteNG 如此強大的系統管理工具,提供彈性的功能擴充,甚至連原始碼都給你了,這樣的好東西還不用嗎?


👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍






同場加映:其它平台方案


那麼,在 Windows 平台以外,例如 macOS、iOS、Linux、Android 上也想要管理遠端桌面呢?



它是我使用很久的方案(從前名為 2X Client),有時人在外面手上只有手機,Parallels Client 就是我認為最完美的遠端桌面解決方案,在 macOS 上我也是使用它做為管理軟體。