1. Home
  2. Tutorials
  3. How to Manage VNC Remote Desktop Access for Windows and Linux with JumpServer

How to Manage VNC Remote Desktop Access for Windows and Linux with JumpServer

  • Published on 2026-05-26
  • 6 views

#TLDR

VNC (Virtual Network Computing) gives sysadmins full graphical desktop control over remote Windows and Linux servers, making it far more practical than SSH for GUI-heavy operations like software installation, file management, and visual configuration. Without a centralized access layer, though, direct VNC connections create audit gaps, shared credentials, and compliance exposure. JumpServer routes every VNC session through a single governed gateway, recording activity, enforcing account-level authorization, and eliminating the need for engineers to know root-level VNC passwords.


Table of Contents


What Is VNC and Why IT Teams Use It

VNC stands for Virtual Network Computing. It is an open, cross-platform remote desktop protocol that transmits keyboard and mouse input to a remote machine and streams the graphical desktop back to the user in real time.

Unlike SSH, which gives you a terminal window, VNC gives you the full desktop GUI. That matters when you need to:

  • Configure applications that lack CLI interfaces
  • Perform visual software installations on remote servers
  • Manage file systems through a graphical file manager
  • Troubleshoot GUI-layer errors that do not surface in logs
  • Support legacy systems running Windows or Linux desktop environments

VNC follows a client-server model. The VNC server runs on the machine you want to control (e.g., a Windows or Linux asset). The VNC client (also called VNC Viewer) runs on the administrator's device. Common implementations include:

Implementation Platform Notes
TightVNC Windows / Linux Lightweight, widely deployed on Windows
TigerVNC Linux / Windows High performance, TLS encryption, systemd integration
RealVNC Windows / Linux / macOS Commercial offering with cloud relay
UltraVNC Windows Feature-rich, plugin support

what-is-vnc.png


Why VNC Access Needs Centralized Governance

Direct VNC connections — where an administrator connects straight from their workstation to a server's IP on port 5900/5901 — create four compounding problems for enterprise environments:

1. Shared credentials. Most teams configure a single VNC password on the server. Everyone who needs access uses the same password, making individual accountability impossible.

2. No audit trail. There is no record of who connected, when, or what they did during the session. When a misconfiguration or incident occurs, forensic investigation has nowhere to start.

3. Firewall exposure. Exposing VNC ports (5900–5910) on production servers dramatically increases the attack surface. Attackers actively scan for open VNC ports — research by Shodan consistently shows hundreds of thousands of publicly accessible VNC instances.

4. Compliance gaps. Frameworks like PCI DSS, HIPAA, ISO 27001, and SOC 2 require that privileged access to systems be controlled, logged, and reviewable. Unmanaged VNC connections fail all four requirements.

The solution is a PAM (Privileged Access Management) platform that acts as a centralized proxy for all VNC sessions. JumpServer does exactly this: every VNC connection routes through JumpServer, which enforces authorization policies, records sessions, and maintains a tamper-evident audit log.


VNC vs. RDP: Choosing the Right Protocol

Before diving into configuration, it helps to know when VNC is the right choice versus Microsoft's RDP.

Attribute VNC RDP
Cross-platform Yes — works on Linux, Windows, macOS Primarily Windows; Linux support via third-party clients
Protocol type Open standard (RFB protocol) Proprietary (Microsoft)
Encryption Varies by implementation (TLS available in TigerVNC) Built-in TLS + NLA
Performance Lower on high-latency WAN links Optimized for WAN
GUI applications Full graphical desktop sharing Full graphical desktop sharing
Linux support Native — any desktop environment (GNOME, KDE, XFCE) Requires xrdp or similar
Best for Mixed OS environments, Linux GUI servers, legacy systems Windows-first environments

VNC wins when your infrastructure includes Linux servers with graphical desktop environments, or when you need cross-platform client compatibility without licensing dependencies.


Part 1: Connect Windows Assets via VNC in JumpServer

Prerequisites and TightVNC Setup

Before adding a Windows machine as a VNC-managed asset in JumpServer, complete the following on the Windows host:

Install TightVNC. Download the installer from https://www.tightvnc.com/download.php and run it on the Windows server. During installation, set a strong VNC password. Note it — you will need it in JumpServer.

download-tightvnc.png

Create a Windows asset with the VNC protocol. In the JumpServer console, go to Assets, add the Windows server, and assign the VNC protocol. JumpServer will use the null account's password to authenticate the VNC session.

vnc-create-windows-asset.png

Add a null account in JumpServer. In JumpServer, create an account entry for this asset with:

  • Username: null (or any placeholder)
  • Password: the VNC password you set in TightVNC

TightVNC download: https://www.tightvnc.com/download.php


Option A: Web GUI Connection

JumpServer includes a built-in browser-based VNC client. No software installation on the administrator's workstation is required.

  1. Log in to the JumpServer web console.
  2. Navigate to My Assets and find the Windows host.
  3. Click Connect and choose VNC.
  4. The graphical desktop loads directly in your browser window.

This method suits occasional access, help desk workflows, and situations where installing a VNC client on every admin workstation is impractical.


Option B: VNC Client (TigerVNC Viewer via JumpServer Client)

For administrators who prefer a native VNC Viewer experience with better performance:

  1. Download the JumpServer Client from your JumpServer instance.
  2. Download TigerVNC Viewer from https://sourceforge.net/projects/tigervnc/.
  3. Configure the TigerVNC path in JumpServer Client for VNC protocol.
  4. When you launch the connection, JumpServer Client starts TigerVNC Viewer automatically and proxies the session through JumpServer.

download-tigervnc.png

jumpserver-client-tigervnc.png

The key advantage: the administrator never sees the VNC password. JumpServer injects credentials transparently, maintaining full password governance.

Connection wizard flow:

  1. Open JumpServer Client → select the Windows asset
  2. Choose VNC as the protocol
  3. Launch → JumpServer Client opens TigerVNC Viewer and connects
  4. The VNC desktop appears; the session is recorded in JumpServer

Option C: Remote Application Connection

JumpServer also supports remote application publishing, where individual Windows applications (rather than a full desktop) stream to the user. This requires:

  • An application publishing host deployed in your environment
  • TigerVNC installed on that publishing host
  • The remote application configured in JumpServer's app publishing settings

This mode is ideal for scenarios where you want to give users access to a specific Windows application (e.g., a database admin GUI or an ERP client) without exposing the full desktop.


Part 2: Connect Linux Assets via VNC in JumpServer

Linux VNC setup requires more configuration than Windows because most Linux servers run without a graphical interface by default. The steps below use CentOS 8.5 and TigerVNC as the reference implementation. The process is substantially similar for RHEL, Rocky Linux, and AlmaLinux.

Step 1 – Install a Desktop Environment (Optional)

A VNC server needs a graphical environment to share. If you already have a Desktop Environment on your Linux server, you can skip this step. If your Linux server runs in multi-user (headless) mode, install a desktop environment first:

# List available software groups to confirm the group name
dnf grouplist

# Install the full GNOME desktop environment (CentOS 8.5)
dnf groupinstall -y "Server with GUI"

# Set graphical mode as the default boot target
systemctl set-default graphical.target

# Verify the change
systemctl get-default
# Expected output: graphical.target

# Reboot to apply all changes
reboot

Note: To revert to headless mode later, run systemctl set-default multi-user.target and reboot.

Step 2 – Install TigerVNC Server

TigerVNC is the recommended VNC server for enterprise Linux environments. It supports TLS encryption, systemd integration, and multi-user sessions.

# Install TigerVNC server
dnf install tigervnc-server -y

# Verify installation
rpm -qa | grep tigervnc-server

A successful install outputs a package name like tigervnc-server-1.12.x-x.el8.x86_64.

Step 3 – Create a Dedicated VNC User

Create a dedicated system account for VNC sessions. Using a dedicated account — rather than root — limits the blast radius if credentials are ever compromised.

# Create the VNC user
adduser VNC01

# Set the system login password (used to unlock the GNOME desktop)
passwd VNC01

Security note: Do not use root as the VNC session user. Privilege escalation from within a recorded VNC session is far easier to audit when the session starts from a non-root account.

Step 4 – Configure the VNC systemd Service

TigerVNC uses systemd templates. The :1 display identifier maps to port 5901 (5900 + 1). If you need multiple simultaneous VNC sessions, create additional service files for :2 (port 5902), :3 (port 5903), and so on.

# Copy the template service file for display :1
cp /lib/systemd/system/[email protected] \
   /etc/systemd/system/vncserver@:1.service

# Edit the service file
vim /etc/systemd/system/vncserver@\:1.service

Replace the file content with the following:

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple

# Clean stale lock files from /tmp/.X11-unix before starting
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver_wrapper VNC01 %i
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

What vncserver_wrapper does: It starts the VNC server as the specified user (VNC01) and ensures the session is tied to that user's environment, including their desktop session and home directory.

Step 5 – Set the VNC Password

The VNC password is separate from the system login password. JumpServer will use this password to authenticate the VNC connection.

# Switch to the VNC user
su - VNC01

# Set the VNC connection password
vncpasswd
# Enter password when prompted (twice)
# When asked "Would you like to enter a view-only password?", enter: n

# Return to root
exit

Record this VNC password. You will enter it in JumpServer when configuring the asset account.

Step 6 – Start and Enable the Service

# Reload systemd to pick up the new service file
systemctl daemon-reload

# Start the VNC service
systemctl start vncserver@:1.service

# Enable it to start automatically on boot
systemctl enable vncserver@:1.service

# Verify the service is running
systemctl status vncserver@:1.service
# Look for: Active: active (running)

Step 7 – Open the Firewall Port

VNC display :1 listens on TCP port 5901. Open this port in firewalld:

# Allow TCP port 5901 permanently
firewall-cmd --permanent --add-port=5901/tcp

# Reload the firewall to apply the rule
firewall-cmd --reload

# Verify the port is open
firewall-cmd --query-port=5901/tcp
# Expected output: yes

Tip: Only open VNC ports to the JumpServer host's IP, not to the entire network. Use a firewall rule like --source=<jumpserver-ip> to restrict inbound connections.

Step 8 – Add the Asset in JumpServer

With the Linux VNC server running, configure the asset in JumpServer:

  1. Create a Linux asset. Go to Assets → Hosts, click Create, and enter the server's IP address and hostname.
  2. Add the VNC protocol. In the asset's protocol settings, add VNC on port 5901.
  3. Add an account. Create an account entry with username VNC01 and the VNC password set in Step 5.
  4. Set up authorization. Assign asset access to the appropriate JumpServer user groups.
  5. Test the connection. Click Test Connection in the asset detail page. A green success indicator confirms JumpServer can reach the VNC server.

Once tested, administrators can connect via the web browser or JumpServer Client — with every session recorded, timestamped, and linked to an individual user account.


Security Best Practices for VNC Access via JumpServer

Running VNC through JumpServer eliminates the most critical risks, but a few additional hardening steps close remaining gaps:

1. Never expose VNC ports directly to the internet. All VNC access must route through JumpServer. Use firewall rules to allow VNC traffic only from the JumpServer server's IP.

2. Use dedicated VNC accounts, not root. The VNC session user should have the minimum permissions required. Privilege escalation within a session (e.g., sudo) will appear in JumpServer's session recording.

3. Rotate VNC passwords regularly. Treat VNC passwords as privileged credentials. JumpServer can store and rotate these through its password management module, eliminating manual password distribution.

4. Enable session recording. JumpServer records VNC sessions as video playback files. Activate this feature for all VNC-accessible assets to satisfy audit requirements under PCI DSS, HIPAA, and ISO 27001.

5. Use display-specific ports. Each VNC display maps to a unique port (:1 → 5901, :2 → 5902). Limit firewall rules to only the ports in active use.

6. Monitor for anomalous session behavior. JumpServer's session management dashboard flags unusual patterns — long sessions, off-hours connections, and connections from unexpected locations.


Conclusion

VNC gives enterprise IT teams full graphical control over remote Windows and Linux servers — a capability that SSH simply cannot match for GUI-heavy workloads. Configuring TightVNC on Windows and TigerVNC on Linux takes under 30 minutes per host, and routing those connections through JumpServer converts every VNC session from an unaudited, credential-sharing risk into a governed, recordable, individually accountable privileged access event.

The result is operational flexibility without the compliance exposure that comes with direct VNC access.

Ready to centralize your VNC access management? JumpServer supports VNC, RDP, SSH, SFTP, and more from a single platform. With 500,000+ deployments and 30,000+ GitHub stars, it is the most widely adopted open-source PAM solution for enterprises managing mixed Windows and Linux infrastructure.

Start your free trial at jumpserver.com or explore the Community Edition on GitHub.

Contact