rdp-cli

rdp-cli 連線 Mac VNC 認證失敗的解決方法

認證失敗不一定是密碼錯誤。macOS 螢幕共享的 Mac 帳號與獨立 VNC 密碼需要不同連線方式。rdp-cli 0.1.1 支援 Apple ARD 帳號認證及 RFB 003.889 握手。

檢查兩端設定

在被控 Mac 的系統設定(舊版為系統偏好設定)找到共享,啟用螢幕共享並核對允許使用者。若已使用遠端管理,先檢查其權限,不要隨意切換服務。參閱 Apple 說明。用戶端安裝 0.1.1 或更新版本,確認 connect --help 包含 ard。

選對密碼

Mac 帳號:被控 Mac 的帳號名稱與登入密碼,使用 --user MAC_USER --vnc-security ard,不是 Apple 帳號登入。

獨立 VNC 密碼:VNC 檢視器專用密碼,不加 --user,使用 --vnc-security vnc-auth。傳統 VNC 八位元組限制不適用 ARD;ARD 的帳號與密碼各最多 63 個 UTF-8 位元組。

以 Mac 帳號連線

替換 192.0.2.20 和 MAC_USER,macOS/Linux 在 Bash 執行:

IFS= read -r -s -p 'Password: ' mac_password
printf '\n'
printf '%s' "$mac_password" | rdp-cli connect --protocol vnc --host 192.0.2.20 --user MAC_USER --vnc-security ard --password-stdin
unset mac_password

Windows 在 EXE 目錄使用 PowerShell:

$secret = Read-Host 'Password' -AsSecureString
$savedEncoding = $OutputEncoding
try {
  $OutputEncoding = [System.Text.UTF8Encoding]::new($false)
  [System.Net.NetworkCredential]::new('', $secret).Password |
    .\rdp-cli.exe connect --protocol vnc --host 192.0.2.20 --user MAC_USER --vnc-security ard --password-stdin
} finally {
  $OutputEncoding = $savedEncoding
  $secret.Dispose()
}

使用獨立 VNC 密碼時,保留密碼輸入區塊,移除 --user MAC_USER,將 ard 改為 vnc-auth,輸入獨立密碼。失敗後不要自動更換認證方式或伺服器設定。

核對連線結果

檢查 ok 與 data.session,把實際編號填入 SESSION。確認畫面是目標 Mac,再於測試文件中根據新畫面操作並驗證文字。認證成功不等於桌面操作已驗證。

以下命令在 Windows 請於 EXE 目錄使用 .\rdp-cli.exe 或實際絕對路徑。

rdp-cli status --session SESSION
rdp-cli screenshot --session SESSION --out before.png
rdp-cli watch --session SESSION --viewer window
rdp-cli watch --session SESSION --viewer web

仍失敗時

現象 檢查
沒有使用者名稱,Mac 密碼被拒絕 使用 --user 與 ard。
獨立 VNC 密碼被拒絕 移除 --user,使用 vnc-auth。
舊版不支援 Apple 協定或認證 確認實際執行 0.1.1 或更新版本。
認證前逾時 檢查位址、共享服務及 TCP 5900 或實際埠。
帳號仍被拒絕 核對允許使用者與帳號名,先讀取錯誤。

ARD 保護憑證交換,但不加密桌面傳輸,請使用可信網路或 VPN。VNC 不提供 RDP 交換磁碟、音效或麥克風重新導向。0.1.1 已驗證 Mac 帳號連線、畫面、輸入及重連,但並非所有 Mac 政策與設定。

VNC 命令教學