執行訪客探索

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

總覽

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

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

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

  • 對於部署在 VMware 上的 Linux 和 Windows VM,mcdc CLI 支援使用 discover vsphere 指令遠端執行。
  • 如要透過 mcdc CLI 存取 Linux 機器,可以使用 SSH 搭配 discover 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 上,您不需要 Root 存取權,但 Root 存取權可讓 mcdc CLI 收集完整評估所需的資料。

如要使用 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,如「執行清查探索」一節所述。

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

透過 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

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

透過 WMI 從遠端收集資料

如要在支援 WMI 的目標 Windows 電腦上執行客層探索,可以在裝載 mcdc CLI 的 Windows 電腦上使用 mcdc discover wmi 指令。WMI 集合僅支援 Windows 版 mcdc CLI。

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

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

  3. 下載及匯入結果。

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

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

    mcdc.exe discover wmi IP_HOSTNAME
    

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

  4. 系統提示時,請輸入憑證。

收集個別 Linux 電腦的資料

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

您通常會指定 sudo 選項來執行指令碼。您也可以選擇使用執行 mcdc CLI 的使用者權限執行指令碼。不過,指令碼可能無法收集所有必要資料。

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

    sudo ./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 檔案的路徑。

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

收集個別 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 檔案的路徑。

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

後續步驟