Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Кратко о задаче
Перед началом работ нужно подготовить сервер Debian, в облаке или локально. Помимо самой системы, желательно сразу настроить пользователя root и sudo (первый без привилегий, второй с ними). Также обязательно разрешить в брандмауэре коннект через SSH.
- Машина с предустановленной Windows или macOS.
- Предустановленная утилита TightVNC, RealVNC, UltraVNC в первом случае или Screen Sharing во втором.
Возможно использование и любой Linux. На нее можно установить один из продуктов – vinagre, krdc, RealVNC или TightVNC.
Инсталляция сервера VNC и среды рабочего стола
Изначально сервер встает без привычных визуальных окон, с которыми было бы удобно работать. Программы для удаленного управления на платформе также «по умолчанию» нет, поэтому первым делом мы их инсталлируем. В этой задаче возьмем за «основу» пакет среды рабочего стола Xfce и утилиту TightVNC, оба продукта расположены в официальном репозитории Debian.
Сначала проведем обновление перечня пакетов, уже имеющихся на хосте:
Следующим шагом установим продукт Xfce:
sudo apt install xfce4 xfce4-goodiesПри инсталляции система предлагает указать язык клавиатуры из предлагаемого перечня. От пользователя достаточно выбрать нужный вариант и нажать Enter, после этого процедура продолжится. По завершении можно сразу же поставить сервер TightVNC:
sudo apt install tightvncserverПо итогу требуется задать утилите первоначальные настройки VNC – пароль безопасности и сгенерировать файлы, где будут храниться конфигурационные параметры.
Программа предложит указать пароль с его подтверждением, который будет использоваться для коннекта с удаленной системой:
You will require a password to access your desktops.
Password:
Verify:Необходимо внести пароль от 6 до 8 знаков, более длинные комбинации автоматом обрежутся. Параллельно с основным можно задать защиту с поддержкой режима «только просмотр». Под ним у вошедшего не получится контролировать удаленную клавиатуру и мышку, зато легко выйдет продемонстрировать работу специалиста.
После ввода обоих паролей утилита самостоятельно сгенерирует файл конфигурации:
Would you like to enter a view-only password (y/n)? n
xauth: file /home/username/.Xauthority does not exist
New 'X' desktop is your_hostname:1
Creating default startup script /home/username/.vnc/xstartup
Starting applications specified in /home/username/.vnc/xstartup
Log file is /home/username/.vnc/your_hostname:1.logВладельцу нужно задать такие настройки, чтобы**** VNC Server на Debian «понимал», какие команды требуется выполнить на старте – например, указать рабочий стол, который понадобится сразу при активации соединения. Перечень таких «указаний» размещен в файле xstartup, расположенном в подкаталоге .vnc каталога home. Вариант startup создается при первоначальном старте vncserver.
Но мы внесем в конфигурацию отдельный сценарий, включающий старт интерфейса с графикой Xfce. Важно учитывать, что с заводскими настройками VNC общается с удаленными хостами через порт 5901. Его так и называют – порт дисплея, для программы он является «номером 1». Последнее позволяет запуск нескольких экземпляров под номерами 2, 3 и т.д.
Перед**** настройкой VNC в Debian 10 требуется остановить ее командой:
На экране пользователь наблюдает такой пост:
Killing Xtightvnc process ID 17648Также желательно создать бэкап первоначального файла, чтобы быстро откатить настройки при ошибке управления:
mv ~/.vnc/xstartup ~/.vnc/xstartup.bakТеперь можно сгенерировать новый файл xstartup и редактировать его в штатном приложении:
Все команды, внесенные в него, автоматически выполнятся при старте VNC вместе с системой или при рестарте самой утилиты. Внесем сначала задачу запуска среды рабочего стола:
~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &Строка с наименованием Xresources – это имя сервера, на котором требуется запустить утилиту xrdb. Внутри одноименного файла можно указать цвет терминала, тему курсора, тип рендеринга шрифта и другие параметры, определяющие внешний вид и удобство пользования Рабочим столом. Вторая строка – непосредственно команда запуска программы для управления сервером.
После изменения конфигурационного файла его нужно сделать исполняемым:
sudo chmod +x ~/.vnc/xstartupВсе, настройка VNC Server завершена, остается принудительно перезапустить его.
На экране пользователь увидит:
New 'X' desktop is your_hostname:1
Starting applications specified in /home/username/.vnc/xstartup
Log file is /home/username/.vnc/your_hostname:1.logНастройка рабочего стола VNC
Программа TightVNC по умолчанию активирует соединение без поддержки шифрования. Но для нашего эксперимента требуется безопасный тоннель по стандарту SSH. Для этого на рабочем месте нужно создать соответствующее соединение, перенаправляющее информацию в localhost для обработки утилитой VNC.
Выполнить задачу можно командой в терминале (Linux или macOS):
ssh -L 5901:127.0.0.1:5901 -C -N -l user your_server_ipЗдесь опция -L обозначает наличие закрепления портов. Если не менять заводские настройки, речь идет о номерах 5901 на обоих хостах (удаленном и локальном). Опция -C позволяет сжимать данные перед их отправкой на сервер и обратно. Символ -N нужен, чтобы указать протоколу SSH, что мы не собираемся выполнять удаленные команды, а -l задает наименование хоста, к которому нужно подключаться для удаленного управления.
В приведенной команде требуется заменить слова user и server_ip на имя пользователя root без привилегий и реальный IP-адрес удаленного хоста. На рабочих местах часто устанавливают утилиту PuTTY – клиент SSH с привычным интерфейсом. В ней и указывают IP-адрес хоста, задают значение localhost:5901 в качестве нового порта для переадресации данных.
После активации соединения система предложит ввести пароль, заданный еще на первом шаге настройки. Туннель будет активирован только после успешной аутентификации входящего пользователя. И тот увидит графический интерфейс Xfce в том виде, в котором был задан в настройках .Xresources. Остается настроить Рабочий стол в меню «Использовать конфигурацию по умолчанию». Сеанс связи через SSH отключается нажатием комбинации клавиш <Ctrl+C>.
Запуск VNC как системной службы
На завершающем этапе настроим**** VNC Server как системную службу Debian, чтобы запускать ее, останавливать и перезапускать по тому же принципу, что и остальные службы. Это гарантирует старт утилиты одновременно с запуском сервера. Откроем на редактирование файл настроек – /etc/system/system/vncserver@.service:
sudo nano /etc/systemd/system/vncserver@.serviceЗдесь символ @ нужен в качестве аргумента для изменения параметров службы. Его применяют, когда нужно указать порт дисплея VNC, используемого для работы с утилитой. В файл внесем такие строки (значение user, group, workingdirectory, username требуется заменить на собственные значения):
/etc/systemd/system/vncserver@.service
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=username
Group=username
WorkingDirectory=/home/username
PIDFile=/home/username/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.targetКоманда ExecStartPre позволяет отключить сервер VNC, если тот активен. Заново запустить его можно командой ExecStart, одновременно будет установлено разрешение 1280х800 с 24-битным цветом. Теперь нужно применить изменения и указать системе о наличии другого файла.
sudo systemctl daemon-reloadСледом активируем этот файл:
sudo systemctl enable vncserver@1.serviceЦифра 1, которая указана после @, означает номер дисплея, где требуется активация службы. Он всегда «первый», если не менялись первоначальные настройки, но пользователь может указать любой другой. Теперь отключим активную копию сервера VNC и запустим какую-либо иную службу:
vncserver -kill :1
sudo systemctl start vncserver@1Проверить, работает ли сервер VNC, можно командой:
sudo systemctl status vncserver@1Результат владелец увидит в таком виде:
vncserver@1.service - Start TightVNC server at startup
Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-09-05 16:47:40 UTC; 3s ago
Process: 4977 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
Process: 4971 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS)
Main PID: 4987 (Xtightvnc)
...После проведенных манипуляций сервер станет доступным после перезапуска системы. Теперь повторно запустим канал связи через SSH:
ssh -L 5901:127.0.0.1:5901 -C -N -l username your_server_ipКоманда создаст подключение при помощи клиентского приложения, перекидывающего коннект по localhost:5901 на локальную машину.
Вот мы и завершили настройку и запуск защищенного сервера VNC на сервере с инсталлированной операционной системой Debian 10. Теперь можно выполнять любые привычные операции – запуск и установку/удаление программ, их настройку, управление файлами, серфинг в интернете и т.д.
Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.