Введение
В этом руководстве описывается, как установить и настроить сервер VNC в Linux Debian 10. Мы также покажем вам, как создать туннель SSH и безопасно подключиться к серверу VNC.
Virtual Network Computing (VNC) — это графическая система совместного использования рабочего стола, которая позволяет использовать клавиатуру и мышь для удаленного управления другим компьютером.
Предпосылки
Прежде чем продолжить обучение, убедитесь, что вы вошли в систему как пользователь с привилегиями sudo.
Если вы намерены установить VNC на удаленном сервере, читайте дальше, в противном случае, если вы хотите установить VNC на свой локальный компьютер, пропустите первый абзац «Подключение к серверу» и прочитайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Установить среду рабочего стола
Скорее всего, на вашем сервере Debian не установлена среда рабочего стола. Наш первый шаг — установить облегченную среду рабочего стола.
В репозиториях Debian доступно несколько сред рабочего стола (DE). В этом руководстве мы будем использовать Xfce в качестве предпочтительной среды рабочего стола. Он быстрый, стабильный и легкий, что делает его идеальным для использования на удаленном сервере.
Обновите индекс пакета и установите Xfce на свой сервер Debian с помощью следующих команд:
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
В зависимости от вашей системы загрузка и установка пакетов Xfce может занять некоторое время.
Установите VNC-сервер
В репозиториях Debian также доступно несколько серверов VNC, таких как TightVNC, TigerVNC и x11vnc. Каждый сервер VNC имеет свои сильные и слабые стороны с точки зрения скорости и безопасности.
Мы будем использовать TigerVNC, активно поддерживаемый высокопроизводительный сервер VNC. Чтобы установить TigerVNC на ваш сервер Debian, введите следующую команду:
sudo apt install tigervnc-standalone-server tigervnc-common
После установки сервера VNC запустите команду vncserver
, чтобы создать первоначальную конфигурацию и установить пароль. Не используйте sudo
при выполнении следующей команды:
vncserver
Вам будет предложено ввести и подтвердить свой пароль, а также указать, следует ли установить его как пароль только для просмотра. Если вы решите установить пароль только для просмотра, пользователь не сможет взаимодействовать с экземпляром VNC с помощью мыши и клавиатуры.
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth: file /home/noviello/.Xauthority does not exist
New 'SERVER-1:1 (noviello)' desktop at:1 on machine SERVER-1
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/noviello/.vnc/SERVER-1:1.log
Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/noviello/.vnc/passwd:1 to connect to the VNC server.
При первом запуске команды vncserver
файл паролей будет создан и сохранен в каталоге ~/.vnc
.
Важно отметить, что при работе с серверами VNC: :X
— это порт дисплея, на который ссылается 5900+X
В нашем случае сервер работает на TCP-порту 5901
(5900+1). Если вы создадите второй экземпляр с vncserver
, он будет работать на следующем свободном порту, то есть :2
, это означает, что второй экземпляр будет работать на порту 5902
(5900 + 2).
Прежде чем перейти к следующему шагу, остановите экземпляр VNC с помощью команды vncserver
с параметром -kill
и номером сервера в качестве аргумента. В нашем случае сервер работает на порту 5901 ( :1
), поэтому мы остановим его с помощью:
vncserver -kill:1
Killing Xtigervnc process ID 23907... success!
Конфигурация VNC-сервера
Теперь, когда на сервере установлены и Xfce, и TigerVNC, нам нужно настроить TigerVNC для использования Xfce. Для этого создайте следующий файл:
nano ~/.vnc/xstartup
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
Сохраните и закройте файл, нажав CTRL + X, затем Y, чтобы сохранить изменения, а затем ENTER, если вы используете nano.
Приведенный выше скрипт будет запускаться автоматически каждый раз, когда вы запускаете или перезапускаете сервер TigerVNC.
~/.vnc/xstartup
также должен иметь права на выполнение. Выполните следующую команду chmod
, чтобы убедиться, что разрешения указаны правильно:
chmod u+x ~/.vnc/xstartup
Если вам нужно добавить дополнительные параметры на сервер VNC, вы можете создать файл с именем config
и добавить по одному параметру на строку. Создайте файл конфигурации:
nano ~/.vnc/config
Вставьте следующий код, чтобы вручную установить разрешение:
geometry=1920x1084
dpi=96
Сохраните и закройте файл, нажав CTRL + X, затем Y, чтобы сохранить изменения, а затем ENTER, если вы используете nano.
Создание файла системного диска
Файл системного блока позволит нам легко запускать, останавливать и перезапускать службу VNC, если это необходимо.
Откройте текстовый редактор и скопируйте и вставьте в него следующую конфигурацию. Не забудьте изменить имя пользователя в строке 7, чтобы оно соответствовало вашему имени пользователя.
sudo nano /etc/systemd/system/[email protected]
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=simple
User=Noviello
PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill:%i > /dev/null 2>&1 ||:'
ExecStart=/usr/bin/vncserver:%i -geometry 1440x900 -alwaysshared -fg
ExecStop=/usr/bin/vncserver -kill:%i
[Install]
WantedBy=multi-user.target
Если вы используете nano, сохраните и закройте файл, нажав CTRL + X, затем Y, чтобы сохранить изменения, а затем ENTER.
Перезагрузите службу systemctl, чтобы добавить только что созданный файл, с помощью следующей команды:
sudo systemctl daemon-reload
Затем включите службу:
sudo systemctl enable [email protected]
Число 1
после символа @
определяет порт дисплея, на котором будет работать служба VNC. Как мы обсуждали в предыдущем разделе, поскольку мы используем 1
, сервер VNC будет прослушивать порт 5901
.
Запустите службу VNC, запустив:
sudo systemctl start [email protected]
Убедитесь, что служба успешно запущена:
sudo systemctl status [email protected]
[email protected] - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-11-21 17:18:32 CET; 2s ago
Process: 24316 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill:1 > /dev/null 2>&1 ||: (code=ex
Main PID: 24323 (vncserver)
Tasks: 0 (limit: 2301)
Memory: 612.0K
CGroup: /system.slice/system-vncserver.slice/[email protected]
‣ 24323 /usr/bin/perl /usr/bin/vncserver:1 -geometry 1440x900 -alwaysshared -fg
Подключиться к VNC-серверу
VNC не является зашифрованным протоколом и может быть подвержен перехвату пакетов. Рекомендуемый подход — создать туннель SSH, который безопасно перенаправляет трафик с локального компьютера через порт 5901 на сервер через тот же порт.
Если вы используете Linux, macOS или любую другую операционную систему на базе Unix на своем компьютере, вы можете легко создать туннель SSH с помощью следующей команды:
ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address
Вам будет предложено ввести пароль пользователя.
Не забудьте заменить username
и server_ip_address
на ваше имя пользователя и IP-адрес вашего сервера.
Если вы используете Windows, вы можете настроить туннелирование SSH с помощью клиента PuTTY SSH.
Откройте Putty и введите IP-адрес вашего сервера в поле Host name or IP address
.
В меню Connection
разверните SSH
и выберите Tunnels
. Введите порт VNC-сервера 5901
в поле « Source Port
» и введите server_ip_address:5901
в поле « Destination
» и нажмите кнопку « Add
».
Вернитесь на страницу Session
, чтобы сохранить настройки и не вводить их каждый раз. Теперь все, что вам нужно сделать, это выбрать сохраненный сеанс и войти на удаленный сервер, нажав кнопку « Open
».
Подключение через Vncviewer
Теперь, когда вы настроили туннелирование SSH, пришло время открыть Vncviewer и подключиться к серверу VNC на localhost:5901
.
В этом примере мы будем использовать TigerVNC. Если TigerVNC еще не установлен на вашем локальном компьютере, установите его с помощью следующей команды:
sudo apt install tigervnc-viewer
После завершения установки откройте программу просмотра VNC, введите localhost:5901
и нажмите кнопку « Connect
»:
vncviewer localhost:5901
Введите пароль удаленного сервера при появлении запроса, и вы должны увидеть рабочий стол Xfce по умолчанию.
На данный момент вы успешно подключились к своему серверу через VNC. Теперь вы можете начать взаимодействовать с удаленным рабочим столом XFCE с локального компьютера с помощью клавиатуры и мыши.
Вывод
К настоящему времени у вас должен быть работающий сервер VNC, и вы можете легко управлять своим сервером Debian 10 с локального компьютера с помощью графического интерфейса.