rdp-cli
rdp-cli 连接 Mac VNC 提示认证失败,怎么解决?
VNC 认证失败不一定是密码输错。macOS 屏幕共享可以使用 Mac 账号,也可以配置独立 VNC 密码,客户端必须选对方式。rdp-cli 0.1.1 增加了 Apple ARD 账号认证,并支持 Apple 的 RFB 003.889 握手。
先检查 Mac 与客户端
在被控 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。测试输入时使用临时文档,根据新截图操作,并在输入后核对文字。认证成功并不代表已经确认桌面可用。
下列 rdp-cli 命令在 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 的 Mac 账号方式。 |
| 带用户名,独立 VNC 密码被拒绝 | 改用不带 --user 的 vnc-auth。 |
| 旧客户端提示 Apple 协议或认证方式不支持 | 确认实际执行的是 0.1.1 或更新版本。 |
| 还没认证就连接超时 | 检查地址、屏幕共享服务和 TCP 端口,通常为 5900。 |
| 账号正确仍拒绝 | 检查目标 Mac 允许访问的用户与账号名,先读错误再重试。 |
ARD 保护凭据交换,但不加密桌面画面传输,请在可信局域网或 VPN 中使用。rdp-cli 的 VNC 支持画面与输入,不提供 RDP 交换盘、音频或麦克风重定向。0.1.1 发布验收覆盖了 Mac 账号登录、截图、输入和重连,并不代表所有 Mac 策略与服务端配置都已测试。