Доступ к виртуальной машине по VNC в Ubuntu

Виртуальные машины (VM) удобны для работы на разных платформах и для безопасного тестирования. Если нужен графический интерфейс, по умолчанию вы обычно привязаны к хосту-hipervisoru. Но вы можете расшарить рабочий стол виртуальной машины по сети через VNC. Это позволит подключаться к VM с любого компьютера в локальной сети и работать с ней так, как будто вы сидите за её экраном.
VNC — это протокол общего удалённого рабочего стола. Он передаёт графику по сети, как Remote Desktop в Windows. В этой инструкции мы используем Ubuntu и TigerVNC. При желании вы можете заменить компоненты на альтернативные инструменты.
Что потребуется
- Сервер под управлением Ubuntu с KVM/libvirt, доступ по сети.
- Клиент с Ubuntu или другими ОС и установленным VNC-клиентом (tigervnc, vncviewer и т. п.).
- ISO-образ гостевой ОС для установки.
- Права sudo на сервере для настройки сетевого моста и установки пакетов.
Важное: изменения сетевых настроек лучше выполнять локально или через KVM-панель — не делайте это только по SSH, если не уверены, что сможете восстановить подключение.
Установка пакетов
Ниже показаны базовые пакеты. На сервере запускается VM; на клиенте — программа для просмотра рабочего стола.
На сервере
sudo apt update
sudo apt install qemu-kvm libvirt-bin bridge-utilsНа клиенте
sudo apt update
sudo apt install tigervnc-viewerПримечание: пакетный набор может отличаться в зависимости от версии Ubuntu. В более новых версиях libvirt-пакеты могут называться иначе; при сомнении проверьте официальную документацию дистрибутива.
Настройка сетевого моста
Сетевой мост делает VM видимой в вашей локальной сети как отдельный узел. Это удобно для прямых подключений и тестирования сетевых сервисов.
- Узнайте имя сетевого интерфейса:
ip a- Откройте файл /etc/network/interfaces с root-правами и добавьте конфигурацию моста. Пример:
auto lo
iface lo inet loopback
auto br0
iface br0 inet dhcp
bridge_ports eth0Замените eth0 на имя вашего физического интерфейса. Если у вас несколько интерфейсов, перечислите их через пробел.
Важное: перезагрузка требуется для применения изменений. Не выполняйте эту процедуру по SSH без плана отката.
Создание виртуальной машины
Вы можете использовать GUI-инструменты (virt-manager) или командную строку. Ниже приведён пример команды virt-install. Обратите внимание на пробелы и аргументы — они важны.
Пример создания VM с именем ubuntuArtful:
sudo virt-install \
--name ubuntuArtful \
--memory 4096 \
--vcpus 6 \
--disk size=20 \
--cdrom /home/user/Downloads/ubuntu-17.10.1-desktop-amd64.iso \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole \
--bridge br0Пояснения к ключам:
- –name — имя виртуальной машины.
- –memory — объём ОЗУ в мегабайтах.
- –vcpus — число виртуальных ядер CPU.
- –disk size=20 — размер диска в гигабайтах.
- –cdrom — путь к ISO-образу установки гостевой ОС.
- –graphics vnc,listen=0.0.0.0 — включение VNC и прослушивание на всех интерфейсах (см. раздел безопасность).
- –noautoconsole — не присоединять консоль автматически.
- –bridge br0 — подключение виртуального интерфейса к мосту.
Если вы предпочитаете GUI, установите virt-manager и создайте VM через него. После создания проверьте настройки графики и сети в XML-конфигурации libvirt.
Подключение по VNC

На клиенте откройте TigerVNC (в некоторых дистрибутивах он называется vncviewer). В окне введите IP-адрес сервера и порт VNC (по умолчанию обычно :0, :1 и т. п.). Пример подключения:
vncviewer 192.168.1.100:1

После подключения откроется окно с консолью установки виртуальной машины. Используйте боковые контролы или меню клиента для изменения размера окна и других параметров. Когда установка завершится, вы сможете управлять гостевой системой как обычно.
После выключения гостя вы можете стартовать VM и снова подключаться по VNC:
sudo virsh start ubuntuArtfulБезопасность и ограничение доступа
VNC по умолчанию не шифрует трафик. Открыв VNC на 0.0.0.0, вы рискуете безопасностью. Рекомендую следующие меры:
- Не слушать на всех интерфейсах. Используйте listen=127.0.0.1 и туннелируйте через SSH.
- Настройте пароль VNC (через параметры гостевой графики или отдельные инструменты: x11vnc/tigervnc-standalone-server).
- Блокируйте порт VNC в брандмауэре UFW/iptables и открывайте доступ только по VPN или SSH.
- Для корпоративной среды используйте TLS/SSL или шлюз (Guacamole/NoVNC + HTTPS).
Пример безопасного запуска через SSH-туннель с клиента:
ssh -L 5901:localhost:5901 user@192.168.1.100
vncviewer localhost:1Альтернатива: настройте VNC-сервер так, чтобы он слушал только на интерфейсе 127.0.0.1 и применяйте SSH-туннелирование.
Тестирование и отладка
Если подключение не удаётся:
- Проверьте, слушает ли процесс VNC на нужном порту: sudo netstat -tulpen | grep vnc
- Убедитесь, что firewall не блокирует порт 5900+: sudo ufw status
- Проверьте, что bridge br0 поднят и имеет IP: ip a show br0
- Посмотрите логи libvirt: journalctl -u libvirtd или /var/log/libvirt/*
- При проблемах с разрешением экрана или производительностью попробуйте уменьшить глубину цвета или использовать SPICE.
Частые ошибки:
- Неверные параметры virt-install (слитые без пробелов). Всегда используйте пробелы между ключом и значением.
- Перезапуск сети по SSH без резервного доступа — потеря соединения.
Роли и контрольные списки
Список для администратора сервера:
- Установить qemu-kvm и libvirt.
- Настроить сетевой мост br0 и протестировать локальную сеть.
- Создать VM с нужными ресурсами и включить графику.
- Ограничить слушание VNC и настроить брандмауэр.
- Настроить резервное копирование дисков VM.
Список для пользователя клиента:
- Установить tigervnc-viewer или совместимый клиент.
- Получить IP и порт VNC от администратора.
- Подключиться через SSH-туннель, если требуется.
- Проверить масштаб и ввод мыши/клавиатуры в клиенте.
Критерии приёмки
- VM успешно стартует и отвечает на ping по адресу в локальной сети.
- Графическая консоль доступна через VNC и позволяет завершить установку ОС.
- Подключение по SSH-туннелю работает, при этом VNC не слушает на внешнем интерфейсе.
- Порты VNC закрыты для внешнего доступа без VPN.
Когда это не подходит
- Если вам нужна шифрованная и масштабируемая веб-консоль для множества пользователей, лучше рассмотреть Guacamole или RDP через VPN.
- Если требуется низкая задержка графики или аппаратное ускорение, VNC может оказаться недостаточно быстрым. Рассмотрите SPICE или проприетарные решения.
Альтернативы и дополнительные подходы
- virt-manager — графический менеджер виртуальных машин.
- SPICE — альтернатива VNC с лучшей поддержкой видео и перенаправлением устройств.
- NoVNC + websockify — веб-доступ к VNC через браузер и HTTPS.
- RDP — если гостевая ОС поддерживает RDP и вы работаете из Windows.
- X11 forwarding по SSH — подходит для отдельных X-приложений, но не для полного рабочего стола.
Мини-методология настройки (шаги 1–6)
- Подготовьте сервер и клиент, установите пакеты.
- Настройте сетевой мост и проверьте сетевую видимость.
- Создайте VM через virt-install или virt-manager, включите графику.
- Запустите VM и убедитесь, что VNC-сервер запущен.
- Настройте безопасный доступ (SSH-туннель, брандмауэр, пароль).
- Документируйте настройки и создайте резервные копии.
Короткий план отката и восстановления
- Если после настройки моста сеть пропала, верните прежний файл /etc/network/interfaces из резервной копии и перезагрузите.
- Если VNC раскрылся в интернет, немедленно остановите службу VNC или смените listen на localhost и включите брандмауэр.
Часто задаваемые вопросы
Как узнать, на каком дисплее (:0, :1) работает VNC?
Посмотрите конфигурацию VNC-сервера или используйте ss/netstat для портов 5900+. Например, порт 5901 соответствует дисплею :1.
Можно ли подключаться по VNC через интернет?
Можно, но это небезопасно без VPN или шифрования. Рекомендуется использовать VPN или SSH-туннель.
Как задать пароль для VNC?
Зависит от сервера VNC. Для tigervnc установите пароль с помощью vncpasswd или задайте его в конфигурации сервера.
Примеры команд для быстрого старта
Запуск VM из примера выше:
sudo virt-install \
--name ubuntuArtful \
--memory 4096 \
--vcpus 6 \
--disk size=20 \
--cdrom /home/user/Downloads/ubuntu-17.10.1-desktop-amd64.iso \
--graphics vnc,listen=127.0.0.1 \
--noautoconsole \
--bridge br0Подключение через SSH-туннель на клиенте:
ssh -L 5901:localhost:5901 user@server-ip
vncviewer localhost:1Резюме
Вы можете выполнить удалённый доступ к графическому рабочему столу виртуальной машины по VNC на Ubuntu, установив KVM/libvirt на сервере и tigervnc на клиенте. Настройка сетевого моста делает VM видимой в локальной сети. Не забывайте о безопасности: лучше слушать VNC на localhost и использовать SSH-туннелирование или VPN. Документируйте конфигурацию и проверяйте доступность по контрольным критериям.
Важное: перед изменениями сети сделайте резервные копии конфигураций и имейте альтернативный канал доступа к серверу.
FAQ
Q: Какой порт использует VNC?
A: По умолчанию VNC использует порты 5900+. Дисплей :0 — порт 5900, :1 — 5901 и т.д.
Q: Можно ли использовать системный брандмауэр для ограничения доступа?
A: Да. Используйте ufw/iptables для блокировки портов и разрешайте доступ только с доверенных адресов или через VPN.
Q: Поддерживает ли VNC звук?
A: Оригинальный VNC не передаёт звук. Для звука используйте дополнительную аудиопередачу (PulseAudio через сеть, RTP и т. п.) или другие протоколы.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента