執行訪客探索

本文說明如何執行 mcdc CLI 提供的各種訪客探索方法。

訪客探索功能可掃描及收集機器上執行中應用程式的資料,包括虛擬機器 (VM) 執行個體和實體伺服器。此外,這項工具也會收集機器設定、硬體、網路,以及開啟的檔案、服務和程序等資料。

對於在 Migration Center 用戶資產評估器 CLI 不支援清查探索的平台上執行的機器 (例如在本機執行的機器),以及要全面評估在 VMware、AWS 和 Azure 上執行的 VM,您可以執行客體探索。訪客探索作業會使用訪客收集指令碼收集機器資料,並將資料寫入 Linux 機器的訪客收集 tar 檔案,或 Windows 機器的 zip 檔案。

主機代管 mcdc CLI,將指令碼上傳至目標機器並執行,然後下載結果。您可以在目標電腦上在本機執行指令碼,也可以遠端執行。您可以視基礎架構選擇下列方式,使用 mcdc CLI:

  • 對於部署在 VMware 上的 Linux 和 Windows VM,mcdc CLI 支援使用 discover vsphere 指令遠端執行。
  • 如要遠端探索可透過 mcdc CLI 存取的 Linux 機器,請使用 discover ssh 指令透過 SSH 執行探索作業。
  • 對於可透過 mcdc CLI 存取的 Windows 電腦,您可以使用 Windows Management Instrumentation (WMI) 搭配 discover wmi 指令,執行遠端探索作業。
  • 如果 Linux 和 Windows 電腦未連線至 mcdc CLI,您可以下載並在本機執行客體收集指令碼,然後手動將收集到的資料匯入代管 mcdc CLI 的電腦。

訪客收集指令碼會執行一系列指令,收集來源機器的相關資訊,也可能會收集潛在的敏感資料,例如指令列引數、網路資訊,或執行中程序的環境變數和引數。

事前準備

  1. 詳閱下載及執行 mcdc CLI 的需求條件
  2. 請參閱下載及執行訪客收集指令碼的相關規定
  3. 完成下載 mcdc CLI 的步驟。

使用 VMware 工具遠端收集資料

如果是 vSphere 上代管的 VM,mcdc CLI 可以使用 VMware 工具,在 Linux 和 Windows VM 上遠端部署及執行收集指令碼。使用 VMware 工具時,mcdc CLI 工具會執行下列操作:

  • 將收集指令碼上傳至 VM。
  • 在 VM 上執行指令碼。
  • 下載並匯入結果。

如要遠端收集資料,必須提供兩組憑證:

  • 傳遞至 mcdc CLI 的 vCenter 伺服器使用者名稱,用於連線至 vSphere,且必須具備 VM 的下列權限:
    • 修改營業時間
    • 執行訪客作業程式
    • 訪客作業查詢
  • 虛擬機的使用者憑證:
    • 在 Windows 上,您必須具備管理員權限。
    • 在 Linux 上,您可以使用根憑證或非根憑證。詳情請參閱「Linux 上的訪客探索」。

如要使用 VMware 工具收集資料,請按照下列步驟操作:

  1. 登入代管 mcdc CLI 的 Linux VM。
  2. 切換至您下載 mcdc CLI 的目錄。
  3. 確認 VM 已開機。
  4. 執行訪客探索:

    Linux

    ./mcdc discover vsphere guest --url https://VSPHERE_URL -u VCENTER_USER --vm-user VM_USER VM_ID

    Windows

    mcdc.exe discover vsphere guest --url https://VSPHERE_URL -u VCENTER_USER --vm-user VM_USER VM_ID

    更改下列內容:

    • VCENTER_USER:vCenter 伺服器使用者
    • VM_USER:VM 使用者
    • VM_ID:VM 或 MOREF 的名稱
  5. 系統提示時,請輸入 VCENTER_USERVM_USER 的密碼。

如要使用 VMware 工具平行收集多個 vSphere VM 的資料,請按照下列步驟操作:

  1. 登入代管 mcdc CLI 的 Linux VM。
  2. 切換至您下載 mcdc CLI 的目錄。
  3. 確認所有 VM 都已開機。
  4. 執行訪客探索:

    Linux

    ./mcdc discover vsphere guest all --url https://VSPHERE_URL -u VCENTER_USER --vm-user VM_USER --timeout TIMEOUT_IN_SECONDS

    Windows

    mcdc.exe discover vsphere guest all --url https://VSPHERE_URL -u VCENTER_USER --vm-user VM_USER --timeout TIMEOUT_IN_SECONDS

    TIMEOUT_IN_SECONDS 替換為逾時秒數。

    您可以選擇使用 --os-family 旗標,將探索範圍限制為僅限 Windows 或 Linux VM,也可以使用 --max-parallelism 旗標變更平行處理層級。

  5. 系統提示時,請輸入 VCENTER_USERVM_USER 的密碼。

  6. 您也可以使用 --path 標記,將探索範圍限定在特定 VM,如「執行清查探索」一節所述。

您可以在 Migration Center 線上匯出及評估收集到的資料,也可以執行離線評估。

Linux 上的訪客探索

如果您使用根存取權執行訪客探索 (例如使用 sudo), mcdcCLI 會從機器收集更多資料,而非使用非根使用者憑證執行。

下表比較訪客探索指令碼根據權限層級收集的資料。

按一下即可查看收集的資料

類別 資料 非根層級存取權 根層級存取權
硬體 產品序號 已略過:
需要 Root 存取權。
收集時間:
,來自/sys/class/dmi/id/product_serial
網路 程序到通訊埠的對應 部分:
系統會收集連線資訊,但不會收集其他使用者程序的 PID/程式名稱。
完整:
所有接聽埠和連線都會對應到各自的 PID 和程式名稱。
中介軟體 JBoss / Tomcat 內部 受限:
只能存取目前使用者程序的環境、描述元和限制。
完整:
讀取所有中介軟體執行個體的程序資料 (environfdlimits),來源為 /proc/[PID]
儲存空間 封鎖裝置和掛接點 完整:
使用者可存取的標準工具,例如 lsblkdf
完整:
封鎖裝置詳細資料和系統掛接點。
設定 受限制的系統檔案 部分:
不會從檔案 (例如 /etc/exports ) 收集資訊,且部分 Apache 設定可能因權限而無法讀取。
完整:
root 會略過所有檔案權限限制,收集必要的設定檔。
安全性 SELinux 狀態 受限:
不會收集詳細設定詳細資料。
完整:
sestatus工具收集完整輸出內容。
庫存 已安裝的套件 完整:
所有使用者都能存取標準套件管理員 (dpkgrpm)。
完整:
收集所有已安裝系統套件的完整清單。

透過 SSH 從遠端收集資料

如果託管 mcdc CLI 的機器具有目標 Linux 機器的 SSH 存取權 (不支援 Windows 機器),則 mcdc CLI 可以透過 SSH 連線至目標機器,以收集資料。

使用 SSH 時,mcdc CLI 會執行下列操作:

  1. 將收集指令碼上傳至機器。
  2. 在機器上執行指令碼,並將機器使用者憑證傳遞至 mcdc CLI。

  3. 下載並匯入結果。

支援的 SSH 模式

如果您在 Linux 裝置上使用 mcdc CLI,可以透過兩種模式執行 SSH:

  • 預設:使用 mcdc CLI 電腦上的 ssh 二進位檔和設定。預設模式可以預設使用本機 SSH 設定檔,例如代管工作站的 ~/.ssh/config~/.ssh/known_hosts

    系統顯示提示時,請輸入密碼,或使用 sshpass 在指令列上傳遞密碼或私密金鑰檔案密碼。例如:

    sshpass -p password mcdc discover ssh IP_ADDRESS
    

    IP_ADDRESS 替換為機器的 IP 位址。

  • 內嵌:使用內建的 SSH 程式庫。如果預設模式在您的環境中發生故障,您可以使用內嵌的 SSH 用戶端。不過,這項工具預設不會使用本機 SSH 設定檔。您可以使用 -i 旗標指定 SSH 私密金鑰檔案。

如果您在 Windows 電腦上使用 mcdc CLI,則僅支援內嵌模式。

執行集合

如要透過 SSH 收集資料,請按照下列步驟操作:

  1. 登入代管 mcdc CLI 的 Linux 電腦。
  2. 切換至您下載 mcdc CLI 的目錄。
  3. 收集資料。

    Linux

    ./mcdc discover ssh IP_HOSTNAME

    Windows

    mcdc.exe discover ssh IP_HOSTNAME

    如要探索及收集資料庫資產,請使用 --db-engine 旗標:

    Linux

    ./mcdc discover ssh IP_HOSTNAME --db-engine=DB_ENGINE

    Windows

    mcdc.exe discover ssh IP_HOSTNAME --db-engine=DB_ENGINE

    更改下列內容:

    • IP_HOSTNAME:機器的 IP 主機名稱。
    • DB_ENGINE:要收集的資料庫引擎。支援的值為 sqlservermysqlpostgresql
  4. 系統會使用叫用 mcdc CLI 的使用者安全殼層私密金鑰檔案,進行安全殼層驗證。

    系統提示時,請輸入 Linux 電腦上的帳戶使用者名稱。收集指令碼會使用這些憑證執行。如果叫用 mcdc CLI 的使用者 SSH 私密金鑰無法透過使用者名稱向機器驗證,系統也會提示您輸入密碼。

使用 SSH 時的其他情境

請參閱下列情況,瞭解您可能需要修改指令:

  • 如要使用預設模式指定機器使用者,請使用 -u 標記:

    Linux

    ./mcdc discover ssh -u USER IP_HOSTNAME

    Windows

    mcdc.exe discover ssh -u USER IP_HOSTNAME

    USER 替換為機器使用者。

    系統顯示提示時,請輸入使用者密碼。

  • 如要指定詳細模式,請使用 -v 標記:

    Linux

    ./mcdc discover ssh -u USER -v IP_HOSTNAME

    Windows

    mcdc.exe discover ssh -u USER -v IP_HOSTNAME

  • 如要指定安全殼層私密金鑰檔案,請使用 -i 標記。舉例來說,如要指定 .ssh/my_private_key

    Linux

    ./mcdc discover ssh -i ~/.ssh/my_private_key -u USER IP_HOSTNAME

    Windows

    mcdc.exe discover ssh -i ~/.ssh/my_private_key -u USER IP_HOSTNAME

  • 如要在指令列中指定密碼,請使用內嵌模式:

    Linux

    ./mcdc discover ssh --ssh-client embedded -u USER --passphrase PASSWORD IP_HOSTNAME

    Windows

    mcdc.exe discover ssh --ssh-client embedded -u USER --passphrase PASSWORD IP_HOSTNAME

    由於指令的內嵌表單預設不會使用本機 SSH 設定檔,請確保您在指令中指定的使用者能夠透過 SSH 存取機器,且有權在機器上執行收集指令碼。

  • 如要使用內嵌模式指定 SSH 私密金鑰檔案,請使用 -i 旗標:

    Linux

    ./mcdc discover ssh --ssh-client embedded -i ~/.ssh/id_rsa -u USER --password PASSWORD IP_HOSTNAME

    Windows

    mcdc.exe discover ssh --ssh-client embedded -i ~/.ssh/id_rsa -u USER --password PASSWORD IP_HOSTNAME

  • 您可以使用 mcdc CLI 指令指定大多數 SSH 標記。然後使用 -a--ssh-args 旗標,將這些旗標傳遞至 ssh 指令。舉例來說,如要使用 SOCKS Proxy:

    Linux

    ./mcdc discover ssh -u USER -a '-o' -a 'ProxyCommand=nc -X 5 -x 127.0.0.1:proxy port %h %p' IP_HOSTNAME

    Windows

    mcdc.exe discover ssh -u USER -a '-o' -a 'ProxyCommand=nc -X 5 -x 127.0.0.1:proxy port %h %p' IP_HOSTNAME

您可以在 Migration Center 線上匯出及評估收集到的資料,也可以執行離線評估。

收集個別 Linux 電腦的資料

如要在 Linux 電腦上執行本機訪客收集作業,可以執行 mcdc-linux-collect.sh 指令碼。接著,您可以將指令碼產生的 tar 檔案複製到代管 mcdc CLI 的機器,並使用 discover import 指令匯入。

如要從 Linux 裝置收集所有可能的資料,請使用 sudo 透過根存取權執行指令碼。如果使用使用者權限執行,mcdc CLI 收集的資料會比較有限。詳情請參閱「Linux 上的訪客探索」。

  1. 登入電腦。
  2. 切換至下載訪客集合指令碼的目錄。
  3. 在電腦上執行收集指令碼:

    • 如要以根層級存取權執行:

      sudo ./mcdc-linux-collect.sh
      
    • 如要在沒有根存取權的情況下執行:

      ./mcdc-linux-collect.sh
      

    指令碼會在目前目錄中輸出名為 mcdc-collect-MACHINE_NAME-TIMESTAMP.tar 的 tar 檔案。時間戳記的格式為 YYYY-MM-DD-hh-mm

    按一下即可查看訪客資料收集 tar 檔案格式

    tar 檔案的格式如下:

    collect.log # Log output of the script
     files # Directory containing files with their full path from root. For example:
       |- etc/fstab
       |- etc/hostname
       |- etc/network/interfaces
       |- ...
     commands # Output of commands run by the script:
       |- dpkg
       |- netstat
       |- ps
       |- ...
     found_paths # Text file with the list of installation directories
     machinename # Text file with machine name
     ostype # Text file with operating system type (Linux)
     timestamp # Text file with collection timestamp
     version # Text file with the version of the script
     

    您可以選擇傳遞 --output 引數,並指定要儲存 tar 檔案的路徑。

  4. 將收集到的資料從目標電腦複製到主機。

  5. 在主機上匯入收集到的資料:

    Linux

    ./mcdc discover import PATH_TO_TAR

    Windows

    mcdc.exe discover import PATH_TO_TAR

    PATH_TO_TAR 替換為 tar 檔案的路徑。

您可以在 Migration Center 線上匯出及評估收集到的資料,也可以執行離線評估。

透過 WMI 從遠端收集資料

如要在支援 WMI 的目標 Windows 電腦上執行訪客探索作業,可以在代管 mcdc CLI 的 Windows 電腦上使用 mcdc discover wmi 指令。WMI 收集作業僅適用於 Windows 版 mcdc CLI。

根據預設,mcdc CLI 會使用遠端 WMI 呼叫收集資料,這比以指令碼為基礎的收集方式更快。不過,Windows Server 2008 和更早的版本不支援遠端 WMI 呼叫。如需從舊版 Windows 收集資料,或是在使用 WMI 遠端呼叫時遇到問題,可以新增 --script 旗標,改用以指令碼為基礎的收集方式。

使用 WMI 時,mcdc CLI 會執行下列操作:

  1. 將收集指令碼上傳至機器。
  2. 使用傳遞至 mcdc CLI 的電腦使用者憑證,在電腦上執行指令碼。

  3. 下載結果並匯入 Migration Center。

如要透過 WMI 收集資料,請按照下列步驟操作:

  1. 登入代管 mcdc CLI 的 Windows 電腦。
  2. 切換至您下載 mcdc CLI 的目錄。
  3. 請使用下列其中一種方法收集資料:

    • 如要透過遠端 WMI 呼叫收集資料,請執行下列指令:

      mcdc.exe discover wmi IP_HOSTNAME
      

      IP_HOSTNAME 替換為機器的 IP 主機名稱。

    • 如要使用指令碼收集資料,請使用 --script 旗標:

      mcdc.exe discover wmi --script IP_HOSTNAME
      
  4. 系統出現提示時,請輸入您的憑證。

您可以在 Migration Center 線上匯出及評估收集到的資料,也可以執行離線評估。

收集個別 Windows 電腦的資料

如要在 Windows 電腦上執行本機訪客收集作業,可以執行 mcdc-windows-collect.ps1 指令碼。接著,您可以將指令碼產生的 ZIP 檔案複製到代管 mcdc CLI 的機器,並使用 discover import 指令匯入。

  1. 登入電腦。
  2. 使用「以系統管理員身分執行」選項開啟 PowerShell。
  3. 切換至您下載 mcdc CLI 的目錄。
  4. 在電腦上執行收集指令碼:

    powershell -ExecutionPolicy ByPass -File .\mcdc-windows-collect.ps1
    
  5. 指令碼會將名為 mcdc-collect-MACHINE_NAME-TIMESTAMP.zip 的 ZIP 檔案輸出至目前目錄。

    (選用) 您可以加入輸出路徑,指定其他位置:

    .\mcdc-windows-collect.ps1 PATH_FOR_OUTPUT.zip
    
  6. 在主機上匯入收集到的資料:

    Linux

    ./mcdc discover import PATH_TO_TAR

    Windows

    mcdc.exe discover import PATH_TO_TAR

    PATH_TO_TAR 替換為 tar 檔案的路徑。

您可以匯出收集到的資料,並在「遷移中心」線上評估,或執行離線評估。

後續步驟