Введение
Решим задачу удаленного управления рабочей станцией с Ubuntu 18.04 на борту. Одного SSH недостаточно, т.к. это рабочая станция и необходима удаленная техническая поддержка.
Был выбран VNC, т.к. необходима лицензия в корпоративной среде. Open Source наше всё 🙂
Необходимо
- Рабочая станция с Ubuntu 18.04 и графической средой, с неroot пользователем и фаерволом.
- Рабочая станция с установленным VNC клиентом, поддерживающим подключения по SSH.
- На Windows: TightVNC, RealVNC, UltraVNC.
- На macOS RealVNC.
- На Linux: vinagre, krdc, RealVNC, or TightVNC.
Шаг 1. Установка VNC Server
Устанавливаем на рабочую станцию, которой нужно управлять.
Обновим список пакетов и обновим их:
sudo apt update -y && sudo apt upgrade -y
UPDATE:
TinyVNC - завелся, но криво, графическая оболочка работает наполовину
TigerVNC - завелся, полет нормальный, но нет возможности подключиться к текущему сеансу и подходит только последняя версия Tight VNC Viewer
X11VNC - завелся, но не получилось создать службу в systemd для автозапуска
Установим TigerVNC Server:
sudo apt install xserver-xorg-core
sudo apt install tigervnc-standalone-server tigervnc-xorg-extension tigervnc-viewer
Установим Gnome - опционально, если нет графической оболочки
sudo apt install ubuntu-gnome-desktop
Запустим службу GNOME и убедимся, что он есть а автозагрузке
sudo systemctl start gdm
sudo systemctl enable gdm
Установим пароль VNC Server
Для первоначальной настройки введем команду vncserver
, чтобы установить пароль и создать файлы конфигурации.
vncserver
ВАЖНО! Пароль должен быть от 6 до 8 символов !
После ввода пароля управления будет запрошен пароль только для просмотра. Удобно для демонстраций экрана.
Шаг 2. Настройка VNC Server
VNC запускает свой экземпляр на 5901
порту. Это display port, vnc называет его :1
(в клиенте можно вводить вместо 5901). VNC можно запускать в несколько экземпляров на других display port, :2
или :3
и т. д.
Так как мы собираемся поменять конфигурацию VNC, остановим работающий экземпляр (после любого изменения конфигурации):
vncserver -kill :1
Нас интересует файл xstartup в папке .vnc, которая находится в вашей домашней директории.
Прежде чем менять xstartup, забекапим оригинал:
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Создадим новый xstartup
nano ~/.vnc/xstartup
Добавим строки для использования оболочки GNOME:
#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &
Или добавим строчки для использования оболочки XFCE:
(с GNOME на данный момент баг при логине, не проходит через аутентификацию, с XFCE всё ок)
Чтобы установить XFCE - sudo apt install xfce4 и ребут
#!/bin/sh
xrdb $HOME/.Xresources
startxfce4 &
Чтоб VNC сервер мог использовать файл, сделаем его исполняемым:
sudo chmod +x ~/.vnc/xstartup
Запустим VNC Server
vncserver
Вы должны увидеть такое сообщение:
Output
New 'X' desktop is your_hostname:1
Starting applications specified in /home/имя пользователя/.vnc/xstartup
Log file is /home/имя пользователя /.vnc/your_hostname:1.log
Шаг 3. Соединяемся безопасно
VNC сам не использует шифрованное подключение, поэтому сначала мы подключимся через SSH-туннель и установим VNC сессию к localhost.
Подключитесь по SSH к управляемой рабочей станции через putty или из консоли.
Windows клиент TightVNC можно скачать можно тут - https://www.tightvnc.com/download.php
Шаг 4. Запуск VNC Server как службы
Для упрощения управления и запуска VNC Server после перезагрузки, создадим файл службы:
sudo nano /etc/systemd/system/vncserver@.service
Добавим в него содержимое:
[Unit] Description=Start TightVNC server at startup with 1024x768 resolution and 24 bits
After=syslog.target network.target
[Service] Type=forking
User=ИМЯ ВАШЕГО ПОЛЬЗОВАТЕЛЯ
Group= ИМЯ ВАШЕГО ПОЛЬЗОВАТЕЛЯ
WorkingDirectory=/home/ИМЯ ВАШЕГО ПОЛЬЗОВАТЕЛЯ
PIDFile=/home/ИМЯ ВАШЕГО ПОЛЬЗОВАТЕЛЯ /.vnc/%H:2.pid
ExecStartPre=-/usr/bin/vncserver -kill :2 > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -geometry 1024x768 :2
ExecStop=/usr/bin/vncserver -kill :2
[Install] WantedBy=multi-user.target
Перезапуск служб:
sudo systemctl daemon-reload
Добавление службы в автозагрузку:
sudo systemctl enable vncserver@1.service
Перезапуск для теста:
sudo reboot
Заключение
После перезагрузки всё заработало, надеюсь, у вас тоже.
Полезные команды:
vncserver -list - активные сессии VNC
vncserver -kill :* - закрыть все сессии VNC Server или по идентификатору (:1,:2 и т.д.)
vncpasswd - сменить пароль VNC
Свежие комментарии