Давайте настроим удаленный графический доступ на машину с Debian. Получив такой доступ, мы увидим рабочий стол машины с Debian и сможем управлять им, двигая мышкой и нажимая клавиши. Сделаем это с помощью технологии VNC (Virtual Network Computing). Погнали!
План действий
Сначала работаем на удаленной машине с Debian, графический доступ к которой нам нужен. Установим и настроим VNC сервер.
Затем работаем на локальной машине, установим и настроим VNC клиент. VNC клиенты существуют под все операционные системы, и настройка их однотипная. В этой статье установим и настроим VNC клиент под Windows.
Установка VNC сервера
Устанавливаем VNC сервер:
apt install tightvncserver
Запуск VNC сервера должно происходить от имени того пользователя, в чьей графической сессии необходимо поработать. Заходим под пользователем user или переключаемся на него с помощью команды:
su - user
Запускаем VNC сервер:
vncserver
При первом запуске VNC сервера потребуется придумать и ввести пароль пользователя для подключения по VNC. Длина пароля не должна превышать 8 символов.

Если нужен View-Only Password (пароль, позволяющий пользователю только просматривать удаленный рабочий стол, без возможности двигать мышкой и нажимать клавиши), то нужно будет его придумать и ввести. Если не нужен View-Only Password, то можно отказаться от его ввода.
По умолчанию VNC сервер запускается и слушает TCP порт 5901.
Проверить прослушиваемые порты:
netstat -nltp

Порт 5901 соответствует VNC дисплею :1, поскольку в VNC используется правило: номер порта = 5900 + номер дисплея.
Т.е. если запустить VNC сервер командой:
vncserver :2
то VNC сервер будет слушать TCP порт 5902, а :2 — это второй VNC дисплей.
Настройка VNC сервера
VNC сервер запушен, но его надо еще настроить, поэтому останавливаем его командой:
vncserver -kill :1
Узнаем, какая графическая оболочка используется:
echo $XDG_CURRENT_DESKTOP
У меня, например, Xfce.
Если графическая оболочка не установлена, устанавливаем:
apt install xfce4 xfce4-goodies
Приводим скрипт ~/.vnc/xstartup, где тильда ~ обозначает домашнюю директорию текущего пользователя, к виду:
#!/bin/sh
startxfce4 &
где startxfce4
— запуск графической оболочки Xfce. В случае использования другой графической оболочки замените startxfce4 на:
- startlxqt — для LXQt,
- gnome-session — для GNOME,
- startkde — для KDE Plasma,
- mate-session — для MATE.
Скрипт ~/.vnc/xstartup выполняется каждый раз при запуске VNC сервера.
Настройка автозапуска VNC сервера
Для автозапуска VNC сервера при запуске системы создаем systemd сервис:
touch /etc/systemd/system/vncserver@.service
В созданный файл /etc/systemd/system/vncserver@.service добавляем следующий текст:
[Unit]
Description=Start TightVNC server at startup for user %i
After=network.target
[Service]
Type=forking
User=%i
WorkingDirectory=/home/%i
ExecStart=/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24
ExecStop=/usr/bin/vncserver -kill :1
[Install]
WantedBy=multi-user.target
Перезагружаем конфигурацию systemd:
systemctl daemon-reexec
systemctl daemon-reload
Чтобы при старте системы VNC сервер запускался от имени пользователя user:
systemctl enable vncserver@user.service
Чтобы запустить systemd сервис вручную прямо сейчас, без перезагрузки системы:
systemctl start vncserver@user.service
Готово! VNC сервер настроен и запущен.
Смена пароля пользователя для подключения по VNC
Чтобы сменить пароль пользователя user для подключения по VNC, заходим под пользователем user или переключаемся на него с помощью команды:
su - user
Команда для смены пароля:
vncpasswd
Длина пароля не должна превышать 8 символов. Иначе, пароль будет усечен.
VNC клиент под Windows
Все работы на удаленной машине с Debian у нас завершены. Все оставшиеся работы будем производить на локальной машине с Windows, на которой мы хотим получить удаленный рабочий с Debian.
Установка TightVNC
Скачиваем TightVNC для Windows по ссылке: https://www.tightvnc.com/download.php и устанавливаем. В установленных программах находим и запускаем TightVNC Viewer — это VNC клиент.
Настройка SSH тунеля для VNC
VNC свой трафик не шифрует, пароль пользователя для подключения по VNC ограничен 8 символами, поэтому для безопасности на клиенте настраиваем SSH тунель для VNC, который будет шифровать трафик. Кроме того, благодаря SSH тунелю на удаленной машине с Debian не нужно будет открывать наружу порт 5901.
Скачиваем PuTTY по ссылке: https://www.putty.org/ и запускаем. В разделе Session, в поле Host Name (or IP address) указываем IP адрес удаленной машины с Debian. В поле Port — номер SSH порта, прослушиваемого удаленной машиной с Debian.

В разделе Connection -> SSH -> Tunnels, в поле Source port вводим 5901, в поле Destination вводим:
localhost:5901
и нажимаем кнопку Add.

Чтобы не вводить все эти параметры каждый раз, можно вернуться в раздел Session и сохранить сессию, нажав кнопку Save.
Нажимаем кнопку Open для открытия SSH тунеля для VNC, вводим логин и системный пароль пользователя удаленной машины Debian. В моем случае это будет пользователь user. Все! SSH тунель для VNC установлен.
Пререходим с VNC клиенту TightVNC Viewer, в поле Remote Host вводим:
localhost::5901

и нажимаем кнопку Connect.
Вводим пароль пользователя для подключения по VNC:

Ура! Я вижу удаленный рабочий стол Debian.

Аутентификация по ключу в SSH
Теперь, когда все работает, для безопасности настроим аутентификацию в SSH не по логину и системному паролю, а по ключу. Подробная статья об этом: «SSH key в Windows и Linux. Руководство«.
Выводы
Я использую VNC для доступа к своей рабочей машине с Debian, когда еузжаю и нет возможности взять рабочую машину с собой.
Все вопросы, пожалуйста, в комментариях под статьей.
Комментарии