Home » Установка и настройка VNC на Ubuntu 24
Установка и настройка VNC на Ubuntu 24

Установка и настройка VNC на Ubuntu 24

Если вы администрируете серверы или хотите удалённо управлять Ubuntu машиной с графическим интерфейсом, то VNC (Virtual Network Computing) станет вашим верным спутником. Особенно актуально это для тех, кто работает с VPS или выделенными серверами, где нужен GUI доступ без физического присутствия у машины. В этой статье разберём, как правильно поднять VNC на свежей Ubuntu 24, избежать типичных граблей и настроить всё максимально безопасно.

VNC позволяет передавать desktop через сеть, что незаменимо для работы с графическими приложениями на удалённых серверах. Да, SSH туннели и X11 forwarding тоже существуют, но VNC даёт полноценный desktop experience с возможностью запуска любых GUI приложений.

Как работает VNC

VNC использует протокол RFB (Remote FrameBuffer) для передачи изображения экрана и обработки пользовательского ввода. Архитектура проста: VNC сервер запускается на удалённой машине и создаёт виртуальный desktop, а VNC viewer подключается к нему и отображает содержимое экрана локально.

Основные компоненты:

  • VNC Server — демон, который рендерит desktop и принимает подключения
  • Desktop Environment — GNOME, XFCE, KDE или другая среда рабочего стола
  • VNC Client — приложение для подключения к серверу
  • Display Manager — управляет сессиями пользователей

В Ubuntu 24 по умолчанию используется Wayland, но для VNC лучше переключиться на X11, так как большинство VNC серверов работают именно с X Window System.

Установка необходимых компонентов

Начинаем с обновления системы и установки desktop environment. Для VNC рекомендую XFCE — он легковесный и стабильно работает через VNC:

sudo apt update && sudo apt upgrade -y
sudo apt install ubuntu-desktop-minimal -y
sudo apt install xfce4 xfce4-goodies -y
sudo apt install tightvncserver -y

Альтернативно можно использовать TigerVNC, который показывает лучшую производительность:

sudo apt install tigervnc-standalone-server tigervnc-xorg-extension -y

Настройка VNC сервера

Первый запуск VNC сервера для создания конфигурации:

vncserver :1 -geometry 1920x1080 -depth 24

Система попросит создать пароль для VNC подключения. Выбирайте надёжный пароль — это ваша первая линия защиты.

Останавливаем сервер для настройки:

vncserver -kill :1

Редактируем конфигурационный файл:

nano ~/.vnc/xstartup

Содержимое файла для XFCE:

#!/bin/bash
xrdb $HOME/.Xresources
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP="XFCE"
export XDG_MENU_PREFIX="xfce-"
startxfce4 &

Делаем файл исполняемым:

chmod +x ~/.vnc/xstartup

Создание systemd сервиса

Для автоматического запуска VNC при старте системы создаём systemd unit:

sudo nano /etc/systemd/system/vncserver@.service

Конфигурация сервиса:

[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=your_username
Group=your_username
WorkingDirectory=/home/your_username

PIDFile=/home/your_username/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1920x1080 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Активируем сервис:

sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service
sudo systemctl start vncserver@1.service

Настройка безопасности

VNC по умолчанию не шифрует трафик, поэтому настройка безопасности критически важна. Рассмотрим несколько подходов:

SSH туннель

Самый простой способ — пробросить VNC через SSH:

ssh -L 5901:localhost:5901 -N -f user@your_server_ip

После этого подключаемся к localhost:5901 локально.

Firewall правила

Ограничиваем доступ к VNC портам:

sudo ufw allow ssh
sudo ufw allow from your_ip_address to any port 5901
sudo ufw enable

Использование VNC с TLS

Для TigerVNC можно включить шифрование:

vncserver -SecurityTypes VncAuth,TLSVnc :1

Сравнение VNC серверов

Параметр TightVNC TigerVNC RealVNC
Производительность Средняя Высокая Высокая
Сжатие Отличное Хорошее Хорошее
Безопасность Базовая TLS поддержка Продвинутая
Лицензия GPL GPL Проприетарная

Практические кейсы использования

Разработка GUI приложений

VNC отлично подходит для разработки на удалённых серверах. Можно запускать IDE, браузеры для тестирования и другие инструменты:

# Установка VS Code через VNC сессию
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | sudo tee /etc/apt/sources.list.d/vscode.list
sudo apt update
sudo apt install code

Мониторинг и администрирование

VNC сессия может быть полезна для запуска графических мониторинговых утилит:

sudo apt install htop iotop nethogs
sudo apt install gnome-system-monitor

Автоматизация и скрипты

Создание скрипта для быстрого развёртывания VNC на новых серверах:

#!/bin/bash
# vnc-setup.sh

set -e

echo "Installing VNC server..."
sudo apt update
sudo apt install -y xfce4 xfce4-goodies tightvncserver

echo "Starting VNC server for initial setup..."
vncserver :1 -geometry 1920x1080 -depth 24

echo "Stopping VNC server..."
vncserver -kill :1

echo "Configuring xstartup..."
cat > ~/.vnc/xstartup << 'EOF'
#!/bin/bash
xrdb $HOME/.Xresources
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP="XFCE"
export XDG_MENU_PREFIX="xfce-"
startxfce4 &
EOF

chmod +x ~/.vnc/xstartup

echo "Creating systemd service..."
sudo tee /etc/systemd/system/vncserver@.service > /dev/null << EOF
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=$USER
Group=$USER
WorkingDirectory=/home/$USER

PIDFile=/home/$USER/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1920x1080 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service

echo "VNC server setup completed!"
echo "Start with: sudo systemctl start vncserver@1.service"
echo "Connect to: your_server_ip:5901"

Альтернативные решения

Помимо VNC существуют другие варианты удалённого доступа к desktop:

  • XRDP — RDP сервер для Linux, совместимый с Windows Remote Desktop
  • NoMachine — проприетарное решение с отличной производительностью
  • Apache Guacamole — HTML5 remote desktop gateway
  • X2Go — оптимизированное решение для низкоскоростных соединений

Типичные проблемы и их решение

Серый экран при подключении

Проблема обычно в неправильном xstartup файле. Проверьте права доступа и содержимое:

ls -la ~/.vnc/xstartup
cat ~/.vnc/xstartup

Медленная работа

Оптимизируем настройки сжатия:

vncserver -geometry 1920x1080 -depth 16 -pixelformat rgb565 :1

Проблемы с кодировкой

Добавьте в xstartup настройки локали:

export LANG=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8

Мониторинг VNC сессий

Для мониторинга активных сессий можно использовать:

# Просмотр активных VNC процессов
ps aux | grep vnc

# Просмотр сетевых соединений
netstat -tulpn | grep :590

# Лог файлы VNC
ls -la ~/.vnc/*.log

Заключение и рекомендации

VNC на Ubuntu 24 — это мощный инструмент для удалённого администрирования серверов с GUI. Основные рекомендации:

  • Безопасность прежде всего — всегда используйте SSH туннели или VPN для доступа к VNC
  • Выбирайте правильный desktop environment — XFCE оптимален для серверного использования
  • Настройте автозапуск — systemd сервис обеспечит стабильную работу
  • Мониторьте производительность — VNC может потреблять значительные ресурсы

Для production серверов рекомендую TigerVNC с TLS шифрованием, а для разработки и тестирования вполне подойдёт TightVNC с SSH туннелированием. Не забывайте регулярно обновлять систему и мониторить логи на предмет подозрительной активности.

VNC особенно полезен при работе с графическими приложениями на удалённых серверах, настройке мониторинговых систем и разработке GUI приложений в облачной среде. Правильно настроенный VNC сервер станет незаменимым инструментом в арсенале системного администратора.


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked