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 政策與設定。