Работать с Ubuntu-сервером можно не только в консоли. Подключите графику через VNC, настройте безопасный доступ и управляйте VPS как привычным рабочим столом — с окном браузера, файловым менеджером и интерфейсом для любого уровня подготовки. Как это сделать — пошагово объясняем в статье.
Введение
Работать с Ubuntu-сервером только через текстовый терминал бывает неудобно, особенно если вы привыкли к графическому интерфейсу или планируете использовать программы с оконным интерфейсом. Чтобы облегчить себе жизнь, достаточно установить на сервер лёгкую графическую оболочку и получить к ней удалённый доступ через VNC.
В статье рассказали, как установить графическую оболочку Xfce и VNC-сервер, настроить автозапуск, подключиться к удалённому рабочему столу, а также обезопасить соединение.
Готовим сервер к работе
Для начала подключитесь к Ubuntu-серверу по SSH, с учётной записью, которая может использовать sudo. Все команды будем выполнять прямо в терминале от имени вашего пользователя.
Сначала стоит привести систему в порядок: обновить список пакетов и установить свежие версии, чтобы потом не ловить ошибки на ровном месте. Введите:
sudo apt update && sudo apt upgrade -y
Дождитесь, пока всё обновится. Если среди обновлений попадётся ядро или важные компоненты, система может попросить перезагрузку. Выполните её так:
sudo reboot
После перезагрузки снова подключитесь по SSH и продолжайте настройку.
Ставим рабочий стол Xfce
На Ubuntu Server графической оболочки нет — это нормально, серверы так и задумывались. Но для удалённого подключения через VNC нужен интерфейс. Самый лёгкий и удобный вариант — Xfce. Он почти не грузит систему и отлично работает даже на скромных ресурсах. Установите Xfce так:
sudo apt install xfce4 xfce4-goodies
Во время установки может появиться вопрос: какой дисплейный менеджер выбрать. Укажите lightdm — он простой, лёгкий и без лишних зависимостей. Хотя для самой работы VNC это не критично, так что если выберете другой, не страшно.
После установки у вас на сервере уже будет полноценная графическая среда. Осталось подключить к ней VNC.
Устанавливаем VNC-сервер
Теперь нужен сам VNC, чтобы удалённо заходить в графику. Возьмём TightVNC, он понятный и есть в стандартных репозиториях Ubuntu. Установите его:
sudo apt install tightvncserver
После установки сразу запустите его, это нужно для первичной настройки:
vncserver
При первом запуске появится запрос на пароль. Введите от 6 до 8 символов — если введёте больше, учтутся только первые восемь. Подтвердите и отвечайте n, если не нужен «режим просмотра» (view-only).
После этого TightVNC создаст начальную конфигурацию и запустится на дисплее :1, то есть, будет слушать порт 5901. Пока что вы увидите серый экран с крестиком вместо курсора, это нормально, просто ещё не подключили рабочий стол.
Если позже решите сменить пароль, используйте команду:
vncpasswd
Запустите её от того же пользователя, и программа сама запросит новый пароль.
Настраиваем запуск Xfce через VNC
Чтобы при подключении через VNC запускался не серый экран, а полноценный рабочий стол, нужно настроить скрипт xstartup. Он отвечает за то, что именно запускается внутри сессии.
Сначала остановите сервер, чтобы не мешал настройке:
vncserver -kill :1
Теперь откройте файл автозапуска:
nano ~/.vnc/xstartup
И замените его содержимое на следующее:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
Эти строки сначала подтянут пользовательские настройки X11, если они есть, а потом запустят Xfce. Сохраните файл (в nano — Ctrl+O, Enter, Ctrl+X) и сделайте его исполняемым:
chmod +x ~/.vnc/xstartup
Теперь можно снова запустить сервер, только добавьте флаг -localhost, чтобы подключаться к нему можно было только с самого сервера. Это важно для безопасности:
vncserver -localhost :1
На этот раз при подключении вы увидите рабочий стол Xfce уже с интерфейсом, а не просто крестик на сером фоне.
Добавляем автозапуск VNC при старте сервера
Чтобы не запускать VNC вручную после каждой перезагрузки, создайте для него сервис в systemd. Откройте новый файл:
sudo nano /etc/systemd/system/vncserver@.service
Вставьте в него такой шаблон:
[Unit]
Description=VNC Server (remote desktop)
After=network.target
[Service]
Type=forking
User=<ваш_юзер>
Group=<ваш_юзер>
WorkingDirectory=/home/<ваш_юзер>
PIDFile=/home/<ваш_юзер>/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Везде, где видите <ваш_юзер>, впишите имя своей учётной записи на сервере. Например, если вы заходите как ubuntu, то пишите ubuntu.
Сохраните файл и скажите systemd, что у него появился новый unit:
sudo systemctl daemon-reload
Включите автозапуск VNC-сервиса для дисплея :1:
sudo systemctl enable vncserver@1.service
Если сервер у вас уже был запущен, остановите его:
vncserver -kill :1
И запустите через systemd для проверки:
sudo systemctl start vncserver@1
Готово. Теперь VNC-сервер будет стартовать сам, как только система загрузится. И вам не придётся держать это в голове — можно просто подключаться к рабочему столу, когда нужно.
Подключаемся к серверу через VNC-клиент
Когда всё настроено, самое время зайти на сервер с вашего компьютера и посмотреть на результат. Для этого нужен VNC-клиент — программа, которая подключается к удалённому рабочему столу.
В клиенте укажите IP-адрес сервера и порт. Порт рассчитывается так: 5900 + номер дисплея. Если у вас дисплей :1, значит, подключаться нужно к порту 5901. Пример адреса: 192.168.0.100:5901.
После подключения программа попросит пароль, который вы задали при первом запуске VNC. Введите его, и через пару секунд перед вами откроется удалённый рабочий стол.
Но есть один важный момент. Если вы запускали сервер с флагом -localhost, а это правильно с точки зрения безопасности, то подключаться напрямую не получится, клиент просто не найдёт сервер.
Открытие порта или SSH-туннель
Вы можете разрешить внешние подключения на порт 5901 и обратиться к VNC напрямую. Например, если используется firewall UFW, откройте порт командой:
sudo ufw allow 5901/tcp
Теперь VNC-сервер будет доступен по адресу сервера и порту 5901. Однако такой способ небезопасен. Соединение VNC не шифруется, и злоумышленники могут перехватить ваш трафик. Пароль ограничен 8 символами и уязвим для подбора. Поэтому открывать VNC в Интернет без туннеля не рекомендуется.
Подключение через SSH-туннель направляет трафик VNC внутри защищённого SSH. На вашем компьютере выполните команду:
ssh -L 5901:localhost:5901 <USER>@<IP_сервера>
Замените <USER> и <IP_сервера> на свои данные. После ввода пароля SSH или использования ключа в окне терминала ничего не произойдёт, но локально порт 5901 будет переведён на сервер. Теперь откройте VNC-клиент и подключитесь к адресу localhost:5901. Вы авторизуетесь и попадёте на удалённый рабочий стол. Всё соединение при этом идёт по SSH-каналу, и посторонние не смогут его перехватить.
На Windows (PuTTY) туннель настраивается аналогично: в разделе SSH → Tunnels добавьте перенаправление порта 5901 на localhost:5901. Установите SSH-соединение, после чего подключитесь VNC-клиентом к localhost:5901.
SSH-туннель решает проблему безопасности. VNC доступен только вам через SSH, а данные шифруются.
Безопасность VNC-соединения
При соблюдении описанных мер (ограничение VNC локальным интерфейсом и использование SSH-туннеля) ваше соединение уже достаточно защищено. Тем не менее, стоит помнить некоторые детали:
- Хранение пароля. VNC-пароль хранится на сервере в файле ~/.vnc/passwd в зашифрованном, но не хешированном виде. Если злоумышленник получит этот файл, он сможет восстановить пароль. Поэтому не полагайтесь на VNC-пароль как на единственную защиту.
- Доступ извне. Если вы всё-таки вынуждены открыть VNC-порт в Интернет, строго ограничьте круг IP-адресов, которым он доступен, например, правилами файрвола или через VPN, и отключайте службу VNC, когда она не используется.
Для удалённого рабочего стола Linux существует более быстрый и безопасный инструмент X2Go. Он использует протокол NX поверх SSH и заметно быстрее VNC на медленных сетях. Потребуется установить сервер и клиент X2Go.
Заключение
Теперь на вашем Ubuntu-сервере настроен графический интерфейс, и при необходимости вы можете подключаться к нему удалённо через VNC. Это упрощает выполнение ряда задач, например, можно запустить браузер или файловый менеджер на сервере и работать с ними привычным способом.
Помните, что GUI на сервере — это вспомогательный инструмент. Основная работа сервера всё равно происходит в консоли, и многие задачи эффективнее выполнять через терминал. Используйте VNC там, где без графики действительно трудно обойтись.
Читайте в блоге:
- Установка или переустановка CentOS через VNC: пошаговое руководство
- Не только для гиков: как VNC бережёт нервы и экономит время
- Выделенный сервер на Windows: когда выбрать и как использовать с пользой