有時候你手上只有一個權限受限的 SSH 帳號:沒有 VNC、沒有 root、也不能用 SCP 傳檔,卻需要看一台 Windows 虛擬機現在卡在什麼畫面。Proxmox 底層的 QEMU monitor,可以做到不少事。

以下的 <vmid> 換成你的虛擬機編號。指令會隨 PVE/QEMU 版本變化,使用前請在自己的環境測過。

遠端截圖

qm monitor <vmid>
screendump /dev/shm/screen.ppm

截出來的是 PPM 格式。我的 PVE 上已經有 Python 和 Pillow 套件(沒有的話可以用 apt install python3-pil 安裝),一行就能轉成 PNG:

python3 -c "from PIL import Image; Image.open('/dev/shm/screen.ppm').save('/dev/shm/screen.png')"

坑一:截出來全黑。 Windows 的螢幕保護或省電模式,會讓截圖拍到一片黑——檔案有大小,但內容全黑。要先送一個按鍵喚醒畫面,再截圖。

送任意按鍵,包括 Ctrl+Alt+Del

sendkey ctrl-alt-delete

這是 SSH、遠端桌面都送不進去的組合鍵,用來解開 Windows 的鎖定畫面特別好用。

沒有 SCP 權限,怎麼把截圖傳回來

用 base64 把檔案轉成文字,透過 SSH 的輸出傳回本機,再解碼回圖片。土法,但有效。

沒有 qm 權限,怎麼看虛擬機設定

直接讀設定檔:cat /etc/pve/qemu-server/<vmid>.conf,內容跟 qm config 一樣。

兩個自動化的坑

  • SSH 密碼不吃管線:echo 密碼 | ssh ... 一律失敗,因為 SSH 要求真正的終端機。要自動化的話,用 Python 的 pexpect 模擬終端機。(更好的做法是改用金鑰登入。)
  • sudo 白名單要能帶參數:如果只允許某個帳號執行特定的 qm 指令,白名單要用萬用字元,讓 qm status <vmid>、qm monitor <vmid> 這類帶參數的指令都能對上同一條規則。

資料來源

  • 本人 Proxmox 遠端管理實作紀錄(2026-08)

封面圖由 AI 生成。