VNC Viewer 连接被拒绝——Connection refused 完整排查清单
错误长什么样
VNC Viewer 弹窗提示:
Connection attempt failed Connection refused
或者更隐晦的"Unable to connect to host"——这基本上是同一个意思:Viewer 的 TCP 包被目标地址拒绝了。
注意:这跟"认证失败(Access denied)"不同——连接被拒绝意味着 Viewer 连门都没摸到,根本没进到认证那一步。
逐项排查(按可能性排序)
1. RealVNC Server 没启动
最常见的原因之一。排查:
- Windows / macOS:右下角系统托盘有没有 RealVNC 图标?如果没有 → Server 没在运行。RealVNC 服务管理器里手动启动。
- Linux / Raspberry Pi:在远程设备上跑:
sudo systemctl status vncserver-x11-serviced
如果显示 inactive (dead) → sudo systemctl start vncserver-x11-serviced
2. 端口被占或写错
Direct 直连时用的端口号不对:
- 默认 5900——如果 Server 跑在 display
:1,实际端口是5901 - VNC Viewer 里输的是
raspberrypi.local:1还是raspberrypi.local:5901?两种写法等价,但不能写错 - 远程设备上跑
ss -tlnp | grep 5900看看 Server 到底在监听哪个端口
3. 防火墙拦截
远程设备的防火墙可能把 VNC 端口堵了:
- Windows Defender 防火墙:打开 Windows Defender 防火墙 → 允许应用通过防火墙 → 勾选 RealVNC Server → 至少勾选专用网络
- macOS:系统设置 → 网络 → 防火墙 → 防火墙选项 → 确认 RealVNC Server 被允许入站
- Linux (ufw):
sudo ufw allow 5900;iptables:sudo iptables -I INPUT -p tcp --dport 5900 -j ACCEPT - 路由器 NAT:跨公网直连时,路由器上是否做了 5900 端口的转发?
4. IP 地址不对
Direct 直连时 Viewer 里输的 IP 是错的:
- 在远程设备上查 IP:Windows →
ipconfig;macOS / Linux →ifconfig或hostname -I - Raspberry Pi 的
raspberrypi.localmDNS 名是否真的能解析?在 Windows 上先ping raspberrypi.local验证 - 如果远程设备用 DHCP 动态获取 IP,下次开机 IP 可能变了 → 建议给远程设备设固定 IP 或用路由器 DHCP 保留
5. 跨公网 + Cloud 中继不通
Cloud 云连接时报 Connection refused 的情况少,但如果 RealVNC Cloud 中继节点对你的网络不可达,也会报类似错误:
- 远程设备是否能访问
*.realvnc.com(443 端口)?在远程设备上curl https://www.realvnc.com验证 - 有些企业网络的出站防火墙会拦截非标准 HTTPS 流量 → 联系 IT 放行 RealVNC Cloud 的出口
6. 同一个 Viewer 连了自己
如果 Viewer 和 Server 装在同一台设备上,Viewer 连接 localhost 的 Server 会形成无限递归("hall of mirrors"),某些版本会直接报 Connection refused。
RealVNC 官方明确禁止:Viewer 和 Server 不能在同一台设备上互相连接——这是产品设计,不是 Bug。
快速定位技巧
最快的排查流程:
- 在远程设备上确认 Server 进程在跑
- 确认监听端口
ss -tlnp | grep 5900 - 从 Viewer 设备上 ping 远程设备 IP(排除网络问题)
- 防火墙放行
- 用 telnet 测
telnet <IP> 5900(通 = Server 在监听;不通 = Server 没在监听或被防火墙挡了)
telnet 是排查端口问题的最快方式:如果 telnet 192.168.1.100 5900 报 "Unable to connect to remote host: Connection refused",那问题在远程侧(Server 没跑 / 防火墙),跟 Viewer 端无关。