Настройка vnc сервера linux

Установка TightVNC на Ubuntu Server 18.04 LTS

По умолчанию серверы Ubuntu 18.04 поставляются без предустановленного графического окружения рабочего стола и сервера VNC. Потому сначала нужно установить эти компоненты. Мы будем использовать пакеты Xfce и TightVNC, доступные в официальном репозитории Ubuntu.

Установка Xfce и TightVNC

Сначала устанавливаем пакет Xfce:

$ sudo apt update $ sudo apt install xfce4 xfce4-goodies

Следом за ним — пакет TightVNC:

$ sudo apt install tightvncserver

Запускаем VNC-сервер командой:

$ vncserver You will require a password to access your desktops. Password: пароль Verify: пароль Would you like to enter a view-only password (y/n)? n xauth: file /home/evgeniy/.Xauthority does not exist New 'X' desktop is vnc-server:1 Creating default startup script /home/evgeniy/.vnc/xstartup Starting applications specified in /home/evgeniy/.vnc/xstartup Log file is /home/evgeniy/.vnc/vnc-server:1.log

При первом запуске vncserver предложит выбрать и подтвердить пароль. Пароль должен быть длинной от шести до восьми символов. Кроме того, будет возможность создать пароль только для просмотра.

Порты VNC-сервера

При запуске первого экземпляра VNC-сервера без указания порта, сервер будет прослушивать порт 5901 (или :1). При запуске следующего экземпляра сервер будет прослушивать порт 5902 (или :2). Можно явно указать порт при запуске экземпляра сервера:

$ vncserver -depth 24 -geometry 1920x1080 :2

Посмотреть список запущенных серверов можно так:

$ ps -ef | grep vnc | awk '' evgeniy 18949 1 1 8:58 tty1 00:00:40 Xtightvnc :1 evgeniy 19133 1 0 9:35 tty1 00:00:00 Xtightvnc :2 evgeniy 19245 1121 0 9:36 tty1 00:00:00 grep vnc

Остановим работу первого и второго экземпляра VNC-сервера:

$ vncserver -kill :1 $ vncserver -kill :2

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

Теперь нужно задать команды, которые сервер VNC будет выполнять при запуске. Эти команды должны находиться в файле xstartup в каталоге ~/.vnc/ текущего пользователя. Сценарий запуска уже был создан при первом запуске сервера с помощью команды vncserver , но его нужно откорректировать для работы с Xfce.

#!/bin/bash xrdb $HOME/.Xresources startxfce4 &

При помощи первой команды GUI сервера VNC читает файл .Xresources . В файле .Xresources пользователь может вносить изменения в некоторые настройки графического рабочего стола (цвет терминала, темы курсора, шрифты). Вторая команда просто запускает графическую оболочку Xfce.

Читайте также:  Нет сети linux ubuntu

Этот файл нужно сделать исполняемым:

Все, можно запускать сервер:

$ vncserver -depth 24 -geometry 1920x1080

Подключение к VNC-серверу

Теперь попробуем подключиться с другого компьютера, используя VNC-клиент Remmina:

Изначально качество изображения низкое, но это можно изменить в настройках клиента:

Перед подключением надо открыть несколько портов на той машине, где мы установили VNC-сервер:

$ sudo ufw allow 5901:5903/tcp
$ sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From ---------------------------------------------------- 5901:5903/tcp ALLOW IN Anywhere 5901:5903/tcp (v6) ALLOW IN Anywhere (v6)

Создание файла сервиса

Теперь нужно настроить сервер VNC как сервис Systemd, чтобы он запускался при загрузке системы. Для этого создаем новый unit-файл:

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

Символ @ в конце имени файла позволит нам передать аргумент, который можно использовать в конфигурации сервиса. С его помощью можно указать порт VNC, который нужно использовать при управлении сервисом.

[Unit] Description = Start TightVNC server at startup After = syslog.target network.target [Service] Type = forking User = evgeniy Group = evgeniy WorkingDirectory = /home/evgeniy PIDFile = /home/evgeniy/.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

Команда ExecStartPre останавливает VNC, если сервис уже запущен. Команда ExecStart запускает VNC и устанавливает глубину цвета и разрешение. Давайте сообщим системе про новый unit-файл.

$ sudo systemctl daemon-reload

Добавляем три службы в автозагрузку:

$ sudo systemctl enable vncserver@1.service $ sudo systemctl enable vncserver@2.service $ sudo systemctl enable vncserver@3.service

Теперь, после загрузки системы, VNC-сервер будет прослушивать три порта: 5901, 5902 и 5903. И мы можем подключиться на любом из них:

И мы можем вручную запустить или остановить VNC-сервер, как любую другую службу:

$ sudo systemctl start vncserver@1.service $ sudo systemctl start vncserver@2.service $ sudo systemctl start vncserver@3.service
$ sudo systemctl stop vncserver@1.service $ sudo systemctl stop vncserver@2.service $ sudo systemctl stop vncserver@3.service

Безопасное подключение

При подключении VNC не использует безопасные протоколы. Давайте создадим SSH-туннель для безопасного подключения к серверу (для этого на машине с VNC-сервером должен быть установлен SSH-сервер):

$ ssh -L 5901:127.0.0.1:5901 evgeniy@192.168.110.13 evgeniy@192.168.110.13's password: пароль Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-72-generic x86_64)

У меня возникло затруднение при попытке установить ssh-соединение с виртуальной машиной, на которой установлен VNC-сервер (и SSH-сервер):

$ ssh evgeniy@192.168.110.13 Connection reset by 192.168.110.13 port 22

Причина в том, что большинство дистрибутивов Linux создают ключи хоста во время установки OpenSSH-сервера. А эта виртуальная машина была клонирована с уже установленным SSH-сервером. Так что все ключи теперь недействительны. Исправить это просто — нужно удалить старые ключи хоста и сформировать их заново:

$ sudo rm /etc/ssh/ssh_host_* && sudo dpkg-reconfigure openssh-server

Ключ сервера используется в процессе обмена ключами для подтверждения того, что клиент действительно связывается с нужным сервером. Клиент ssh запрашивает публичный ключ сервера и спрашивает, можно ли ему доверять:

The authenticity of host 'XXX.XXX.XXX.XXX' can't be established. Are you sure you want to continue connecting (yes/no)? yes

После этого отпечаток публичного ключа сохраняется в файле ~/.ssh/known_hosts . В моем случае сам сервер, просматривая свои ключи, обнаруживал в них ошибку. Если посмотреть файл /var/log/auth.log , то можно увидеть такие записи

. error: could not load host key /etc/ssh/ssh_host_rsa_key . error: could not load host key /etc/ssh/ssh_host_ecdsa_key . error: could not load host key /etc/ssh/ssh_host_ed25519_key . fatal: No supported key exchange algorithms [preauth]

При подключении к VNC-серверу указываем не 192.168.110.13:5901 , а localhost:5901 . Мы как бы подключаемся к локальной машине, но соединение будет проброшено через ssh-туннель на машину с VNC-сервером.

Читайте также:  Merging files in linux

При этом на машине с установленным VNC-сервером должен быть открыт 22-ой порт:

А вот держать открытыми порты 5901:5903 больше не нужно, так что закрываем:

$ sudo ufw delete allow 5901:5903/tcp

Обратите внимание, что VNC-клиент Remmina умеет создавать ssh-туннель самостоятельно:

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

  • 1С:Предприятие (31)
  • API (29)
  • Bash (43)
  • CLI (99)
  • CMS (139)
  • CSS (50)
  • Frontend (75)
  • HTML (66)
  • JavaScript (150)
  • Laravel (72)
  • Linux (146)
  • MySQL (76)
  • PHP (125)
  • React.js (66)
  • SSH (27)
  • Ubuntu (68)
  • Web-разработка (509)
  • WordPress (73)
  • Yii2 (69)
  • БазаДанных (95)
  • Битрикс (66)
  • Блог (29)
  • Верстка (43)
  • ИнтернетМагаз… (84)
  • КаталогТоваров (87)
  • Класс (30)
  • Клиент (27)
  • Ключ (28)
  • Команда (68)
  • Компонент (60)
  • Конфигурация (62)
  • Корзина (32)
  • ЛокальнаяСеть (28)
  • Модуль (34)
  • Навигация (31)
  • Настройка (140)
  • ПанельУправле… (29)
  • Плагин (33)
  • Пользователь (26)
  • Практика (99)
  • Сервер (74)
  • Событие (27)
  • Теория (105)
  • Установка (66)
  • Файл (47)
  • Форма (58)
  • Фреймворк (192)
  • Функция (36)
  • ШаблонСайта (68)

Источник

Оцените статью
Adblock
detector