Skip to main content
Step-by-step guides for SSH on macOS

How to VNC from a Mac to a Linux desktop

Built-in VNC viewer, full RFB protocol support, works with TightVNC/RealVNC/x11vnc/noVNC, and no separate WebSocket relay needed.

Estimated time: 4 minutes
VNC is the cross-platform remote desktop protocol everyone uses on Linux. Whether you're managing a Raspberry Pi's desktop, the noVNC console of a Proxmox VM, or a headless Linux box you want to occasionally see graphically, VNC is the answer. SSHive's built-in VNC viewer uses noVNC under the hood with an embedded WebSocket proxy, meaning you connect directly to a TCP VNC server without setting up websockify or a separate relay.

Step-by-step

  1. 1

    Install a VNC server on the remote

    Raspberry Pi: `sudo apt install realvnc-vnc-server`, enable via `raspi-config` → Interface Options → VNC. Ubuntu/Debian desktop: `sudo apt install x11vnc`, run `x11vnc -auth /var/lib/gdm3/auth-for-gdm-* -display :0 -forever -loop`. Set a VNC password with `x11vnc -storepasswd`. Verify it's listening: `ss -tlnp | grep 5900` (5900 = display :0, 5901 = :1, etc.).
  2. 2

    Create the VNC profile in SSHive (Pro required)

    Sidebar → +. In the type selector at the top, pick **VNC**, port flips to `5900`. Fill Name, Host, Port, Password. That is the entire VNC form, no domain, no quality preset, no resolution dropdown like RDP. VNC is **Pro-only**: in Free, picking VNC triggers the upgrade modal at save (the check happens in `LicenseService.check('session.vnc')`). All the protocol knobs (encodings, quality, compression) are negotiated automatically.
  3. 3

    What runs under the hood, and what is intentionally not exposed

    SSHive's VNC client is **noVNC** running RFB 3.x in the renderer, with a WebSocket proxy on a dynamic 127.0.0.1 port (localhost-only, never reachable from the network). Encodings auto-negotiate: Tight, Hextile, RRE, Raw, ZRLE, CopyRect, DesktopSize. Authentication uses the standard RFB password. There is no TLS/RFB-encryption toggle in the UI, encryption is meant to come from the SSH tunnel below (see next step). DesktopSize is enabled, so resizing the SSHive window resizes the remote desktop.
  4. 4

    Tunnel VNC through SSH (two profiles, no broker logic)

    There is **no jump-host field on the VNC profile itself**, same model as RDP. (1) Create your SSH profile, add a Local forward `15900 → localhost:5900` under Advanced. (2) Create the VNC profile pointing at `localhost:15900`. Connect SSH first, then VNC. Plain VNC password authentication is weak; the SSH tunnel is what actually keeps the traffic away from anyone on the network.

Frequently asked questions

Will SSHive work with Apple Screen Sharing on a Mac?+
Yes, Apple's vncserver speaks RFB, port 5900. Enable on the target Mac: System Settings → General → Sharing → Screen Sharing. SSHive can connect, though for Apple-to-Apple, the built-in client is still richer (audio, drag-drop).

Try SSHive Free for macOS

Get the all-in-one SSH, SFTP, RDP and VNC client for Mac. Free download, no signup required.

Download SSHive Free