Вступление
Virtual Network Computing, или VNC, - это система соединений, которая позволяет вам использовать клавиатуру и мышь для взаимодействия с графической средой рабочего стола на удаленном сервере. Это облегчает управление файлами, программным обеспечением и настройками на удаленном сервере для пользователей, которые еще не знакомы с командной строкой.
В этом руководстве вы настроите сервер VNC на сервере Debian 10 и безопасно подключитесь к нему через туннель SSH. Вы будете использовать TightVNC, быстрый и легкий пакет дистанционного управления. Этот выбор гарантирует, что наше соединение VNC будет гладким и стабильным даже на медленных интернет-соединениях.
Предпосылки
Для завершения этого урока вам понадобится:
-
Один сервер Debian 10, настроенный в соответствии с https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-10, руководством по первоначальной настройке сервера Debian 10], включая пользователя без полномочий root с
+ sudo +
доступ и брандмауэр. -
Локальный компьютер с установленным клиентом VNC, который поддерживает соединения VNC через туннели SSH.
-
В Windows вы можете использовать TightVNC, RealVNC или UltraVNC.
-
В macOS вы можете использовать встроенную программу Screen Sharing или использовать кроссплатформенное приложение, такое как RealVNC.
-
В Linux вы можете выбрать один из множества вариантов, включая
+ vinagre +
,+ krdc +
, RealVNC или TightVNC.
Шаг 1 - Установка среды рабочего стола и VNC-сервера
По умолчанию на сервере Debian 10 нет графической среды рабочего стола или установленного сервера VNC, поэтому мы начнем с его установки. В частности, мы установим пакеты для новейшей среды рабочего стола Xfce и пакет TightVNC, доступный в официальном репозитории Debian.
На вашем сервере обновите список пакетов:
sudo apt update
Теперь установите среду рабочего стола Xfce на свой сервер:
sudo apt install xfce4 xfce4-goodies
Во время установки вам будет предложено выбрать раскладку клавиатуры из списка возможных вариантов. Выберите тот, который соответствует вашему языку, и нажмите + Enter
. Установка будет продолжена.
После завершения установки установите сервер TightVNC:
sudo apt install tightvncserver
Чтобы завершить первоначальную настройку сервера VNC после установки, используйте команду + vncserver
, чтобы установить безопасный пароль и создать файлы начальной конфигурации:
vncserver
Вам будет предложено ввести и подтвердить пароль для удаленного доступа к вашему компьютеру:
OutputYou will require a password to access your desktops.
Password:
Verify:
Пароль должен быть длиной от шести до восьми символов. Пароли длиной более 8 символов будут усечены автоматически.
Как только вы подтвердите пароль, у вас будет возможность создать пароль только для просмотра. Пользователи, которые входят в систему с паролем только для просмотра, не смогут управлять экземпляром VNC с помощью мыши или клавиатуры. Это полезный вариант, если вы хотите продемонстрировать что-то другим людям, использующим ваш VNC-сервер, но это не обязательно.
Затем процесс создает необходимые файлы конфигурации по умолчанию и информацию о соединении для сервера:
OutputWould you like to enter a view-only password (y/n)?
xauth: file /home//.Xauthority does not exist
New 'X' desktop is :1
Creating default startup script /home//.vnc/xstartup
Starting applications specified in /home//.vnc/xstartup
Log file is /home//.vnc/:1.log
Теперь давайте настроим сервер VNC.
Шаг 2 - Настройка VNC-сервера
Серверу VNC необходимо знать, какие команды выполнять при запуске. В частности, VNC должен знать, к какому графическому рабочему столу он должен подключаться.
Эти команды находятся в файле конфигурации с именем + xstartup +
в папке + .vnc +
в вашем домашнем каталоге. Сценарий запуска был создан, когда вы выполнили команду + vncserver +
на предыдущем шаге, но мы создадим наш собственный для запуска рабочего стола Xfce.
Когда VNC впервые настроен, он запускает экземпляр сервера по умолчанию на порту + 5901 +
. Этот порт называется display port, и VNC называет его +: 1 +
. VNC может запускать несколько экземпляров на других портах дисплея, таких как +: 2 +
, +: 3 +
и так далее.
Поскольку мы собираемся изменить настройку сервера VNC, сначала остановите экземпляр сервера VNC, работающий на порту + 5901 +
, с помощью следующей команды:
vncserver -kill :1
Вывод должен выглядеть следующим образом, хотя вы увидите другой PID:
OutputKilling Xtightvnc process ID
Прежде чем изменять файл + xstartup +
, сделайте резервную копию оригинала:
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Теперь создайте новый файл + xstartup +
и откройте его в текстовом редакторе:
nano ~/.vnc/xstartup
Команды в этом файле выполняются автоматически при каждом запуске или перезапуске сервера VNC. Нам нужен VNC, чтобы запустить среду рабочего стола, если она еще не запущена. Добавьте эти команды в файл:
~ / .Vnc / XStartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
Первая команда в файле, + xrdb $ HOME / .Xresources +
, сообщает каркасу графического интерфейса VNC для чтения пользовательского файла + .Xresources +
. + .Xresources +
- это место, где пользователь может вносить изменения в определенные настройки графического рабочего стола, такие как цвета терминала, темы курсоров и рендеринг шрифтов. Вторая команда указывает серверу запустить Xfce, где вы найдете все графическое программное обеспечение, необходимое для комфортного управления вашим сервером.
Чтобы VNC-сервер мог правильно использовать этот новый загрузочный файл, нам нужно сделать его исполняемым.
sudo chmod +x ~/.vnc/xstartup
Теперь перезапустите сервер VNC.
vncserver
Вы увидите вывод, похожий на этот:
OutputNew 'X' desktop is :1
Starting applications specified in /home//.vnc/xstartup
Log file is /home//.vnc/:1.log
Установив конфигурацию, давайте подключимся к серверу с нашего локального компьютера.
Шаг 3 - Безопасное подключение рабочего стола VNC
Сам VNC не использует безопасные протоколы при подключении. Мы будем использовать SSH-туннель для безопасного подключения к нашему серверу, а затем скажем нашему VNC-клиенту использовать этот туннель, а не устанавливать прямое соединение.
Создайте на своем локальном компьютере SSH-соединение, которое безопасно перенаправляет на соединение + localhost +
для VNC. Вы можете сделать это через терминал в Linux или macOS с помощью следующей команды:
ssh -L :127.0.0.1: -C -N -l
Переключатель + -L +
определяет привязки портов. В этом случае мы привязываем порт + 5901 +
удаленного соединения к порту + 5901 +
на вашем локальном компьютере. Переключатель + -C +
включает сжатие, а переключатель + -N +
сообщает + ssh +
, что мы не хотим выполнять удаленную команду. Переключатель + -l +
указывает имя удаленного входа.
Не забудьте заменить ` и `
на имя пользователя без полномочий root и IP-адрес вашего сервера.
Если вы используете графический SSH-клиент, такой как PuTTY, используйте ++
в качестве IP-адреса подключения и установите + localhost: 5901 +
в качестве нового перенаправленного порта в настройках туннеля SSH программы.
После запуска туннеля используйте клиент VNC для соединения с + localhost: 5901 +
. Вам будет предложено пройти аутентификацию, используя пароль, который вы установили на шаге 1.
После подключения вы увидите рабочий стол Xfce по умолчанию.
изображение: https: //assets.digitalocean.com/articles/vnc_debian10/default-xfce.png [VNC-соединение с сервером Debian 10]
Выберите * Использовать конфигурацию по умолчанию *, чтобы быстро настроить рабочий стол.
Вы можете получить доступ к файлам в вашем домашнем каталоге с помощью файлового менеджера или из командной строки, как показано здесь:
изображение: https: //assets.digitalocean.com/articles/vnc_debian10/xfce-windows.png [Файлы через VNC-соединение с Debian 10]
На локальном компьютере нажмите + CTRL + C +
в своем терминале, чтобы остановить туннель SSH и вернуться к вашему приглашению. Это также отключит вашу сессию VNC.
Теперь давайте настроим VNC-сервер как сервис.
Шаг 4 - Запуск VNC как системной службы
Затем мы настроим VNC-сервер в качестве службы systemd, чтобы мы могли запускать, останавливать и перезапускать его по мере необходимости, как и любую другую службу. Это также обеспечит запуск VNC при перезагрузке сервера.
Сначала создайте новый файл модуля с именем + / etc / systemd / system / vncserver @ .service +
, используя ваш любимый текстовый редактор:
sudo nano /etc/systemd/system/[email protected]
Символ + @ +
в конце имени позволит нам передать аргумент, который мы можем использовать в конфигурации сервиса. Мы будем использовать это для указания порта дисплея VNC, который мы хотим использовать при управлении службой.
Добавьте следующие строки в файл. Обязательно измените значение * User *, * Group *, * WorkingDirectory * и имя пользователя на значение * PIDFILE *, чтобы оно соответствовало вашему имени пользователя:
/etc/systemd/system/[email protected]
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=
Group=
WorkingDirectory=/home/
PIDFile=/home//.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Команда + ExecStartPre +
останавливает VNC, если он уже запущен. Команда + ExecStart +
запускает VNC и устанавливает глубину цвета 24-битного цвета с разрешением 1280x800. Вы также можете изменить эти параметры запуска в соответствии с вашими потребностями.
Сохраните и закройте файл.
Затем сообщите системе о новом файле модуля.
sudo systemctl daemon-reload
Включить файл модуля.
sudo systemctl enable [email protected]
+ 1 +
после знака + @ +
обозначает, какой номер дисплея должен отображаться службой, в данном случае по умолчанию +: 1 +
, как обсуждалось на шаге 2 ..
Остановите текущий экземпляр сервера VNC, если он все еще работает.
vncserver -kill :1
Затем запустите его так же, как любой другой сервис systemd.
sudo systemctl start vncserver@1
Вы можете проверить, что это началось с этой командой:
sudo systemctl status vncserver@1
Если все началось правильно, вывод должен выглядеть так:
Output● [email protected] - Start TightVNC server at startup
Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: (running) since Thu 2019-10-10 17:56:17 UTC; 5s ago
Process: 935 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
Process: 940 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
Main PID: 948 (Xtightvnc)
. . .
Ваш VNC-сервер теперь будет доступен после перезагрузки компьютера.
Запустите ваш SSH-туннель снова:
ssh -L :127.0.0.1: -C -N -l
Затем установите новое соединение с помощью программного обеспечения VNC-клиента на + localhost: 5901 +
, чтобы подключиться к вашей машине.
Заключение
Теперь у вас есть защищенный VNC-сервер, работающий на вашем сервере Debian 10. Теперь вы сможете управлять своими файлами, программным обеспечением и настройками с помощью простого в использовании и знакомого графического интерфейса, а также сможете удаленно запускать графическое программное обеспечение, такое как веб-браузеры.