Введение
Virtual Network Computing (VNC) — это графическая система совместного использования рабочего стола, которая позволяет использовать клавиатуру и мышь для удаленного управления другим компьютером.
В этой статье рассматриваются шаги по установке и настройке сервера VNC в CentOS 8. Мы также покажем вам, как безопасно подключиться к серверу VNC через туннель SSH.
Предпосылки
Чтобы следовать этому руководству, вы должны войти в систему как пользователь с привилегиями sudo на удаленном компьютере с CentOS.
Если вы хотите установить 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
Установите среду рабочего стола
Как правило, на серверах не установлена среда рабочего стола. Если компьютер, к которому вы хотите подключиться, не имеет графического интерфейса, первым шагом будет его установка. В противном случае пропустите этот шаг.
Выполните следующую команду, чтобы установить Gnome, среду рабочего стола по умолчанию в CentOS 8 на удаленном компьютере:
sudo dnf groupinstall "Server with GUI"
В зависимости от вашей системы загрузка и установка пакетов и зависимостей Gnome может занять некоторое время.
Установите VNC-сервер
TigerVNC — активно поддерживаемый высокопроизводительный VNC-сервер с открытым исходным кодом. Он доступен в репозиториях CentOS по умолчанию, для его установки введите:
sudo dnf install tigervnc-server
После установки сервера 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
A view-only password is not used
xauth: file /home/nome_utente/.Xauthority does not exist
New 'TEST-SERVER-1:1 (nome_utente)' desktop is TEST-SERVER-1:1
Creating default startup script /home/nome_utente/.vnc/xstartup
Creating default config /home/nome_utente/.vnc/config
Starting applications specified in /home/nome_utente/.vnc/xstartup
Log file is /home/nome_utente/.vnc/TEST-SERVER-1:1.log
При первом запуске команды vncserver
она создаст и сохранит файл паролей в каталоге ~/.vnc
, который будет создан, если его нет.
Примечание :1
после имени хоста в приведенном выше выводе. Указывает номер порта дисплея, на котором работает сервер VNC. В нашем случае сервер работает на TCP-порту 5901
(5900+1). Если вы создадите второй экземпляр, он будет работать на следующем свободном порту :2
, то есть сервер работает на порту 5902
(5900+2).
Важно помнить, что при работе с серверами VNC: :X
— это порт дисплея, на который ссылается 5900+X
Прежде чем перейти к следующему шагу, сначала остановите экземпляр VNC с помощью команды vncserver
с параметром -kill
и номером сервера в качестве аргумента. В нашем случае сервер работает на порту 5901 ( :1
), поэтому для его остановки запустите:
vncserver -kill:1
Killing Xvnc process ID 21975
Настроить VNC-сервер
Теперь, когда и Gnome, и TigerVNC установлены на удаленном компьютере с CentOS, следующим шагом будет настройка TigerVNC для использования Gnome. Сервер VNC использует ~/.vnc/xstartup
для запуска приложений при создании нового рабочего стола. Откройте файл:
vim ~/.vnc/xstartup
Добавьте следующие строки кода в конец файла:
...
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &
~/.vnc/xstartup
также должен иметь права на выполнение. Выполните следующую команду chmod
, чтобы убедиться, что разрешения указаны правильно:
chmod u+x ~/.vnc/xstartup
Приведенный выше скрипт запускается автоматически каждый раз, когда вы запускаете или перезапускаете сервер TigerVNC.
Если вы хотите использовать дополнительные параметры VNC-сервера, откройте файл ~/.vnc/config
и добавьте по одному параметру на строку. Наиболее распространенные варианты перечислены в файле. Раскомментируйте и отредактируйте по своему вкусу.
vim ~/.vnc/config
# securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry=1920x1080
# localhost
# alwaysshared
Создайте файл диска Systemd
Файлы диска позволяют легко запускать, останавливать и перезапускать службы.
Откройте текстовый редактор и скопируйте и вставьте следующую конфигурацию. Убедитесь, что вы изменили имя пользователя в строке 7, чтобы оно соответствовало вашему имени пользователя.
sudo vi /etc/systemd/system/[email protected]
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=simple
User=nome_utente
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
Сохраните и закройте файл.
Сообщите systemd, что мы создали новый файл диска с помощью:
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]; indirect; vendor preset: enabled)
Active: active (running) since 2020-02-21 23:15:22 CET; 4s ago
Process: 6629 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill:1 > /dev/null 2>&1 ||: (code=exited, status=0/SUCCESS)
Main PID: 6657 (vncserver)
Tasks: 0 (limit: 2298)
CGroup: /system.slice/system-vncserver.slice/[email protected]
‣ 6657 /usr/bin/perl /usr/bin/vncserver:1 -geometry 1440x900 -alwaysshared -fg
Подключиться к VNC-серверу
VNC не является зашифрованным протоколом и может быть подвержен перехвату пакетов. Рекомендуемый подход — создать туннель SSH для безопасной пересылки трафика с локального компьютера через порт 5901
на удаленный сервер через тот же порт.
Настройка туннелирования SSH в Linux и macOS
Если на вашем компьютере установлена Linux, macOS или любая другая операционная система на основе Unix, вы можете легко создать туннель с помощью следующей команды ssh
:
ssh -L 5901:127.0.0.1:5901 -N -f -l username remote_server_ip
Вам будет предложено ввести пароль пользователя.
Не забудьте заменить username
и server_ip_address
на ваше имя пользователя и IP-адрес вашего сервера.
Настройка туннелирования SSH в Windows
Пользователи Windows могут настроить туннелирование SSH с помощью PuTTY.
Откройте Putty и введите IP-адрес вашего сервера в поле Host name or IP address
.
В меню Connection
разверните SSH
и выберите Tunnels
. Введите порт VNC-сервера ( 5901
) в поле Source Port
, введите server_ip_address:5901
в поле Destination
и нажмите кнопку Add
.
Вернитесь на страницу Session
, чтобы сохранить настройки и не вводить их каждый раз. Чтобы получить доступ к удаленному серверу, выберите сохраненный сеанс и нажмите кнопку « Open
».
Подключиться через vncviewer
Чтобы подключиться к удаленному серверу, откройте средство просмотра VNC и войдите на localhost:5901
.
Вы можете использовать любую программу просмотра VNC, такую как TigerVNC, TightVNC, RealVNC, UltraVNC, Vinagre и VNC Viewer для Google Chrome.
Мы будем использовать TigerVNC. Откройте вьювер, введите localhost:5901
и нажмите кнопку Connect
.
Введите свой password utente
, когда будет предложено, и вы должны увидеть рабочий стол Gnome по умолчанию.
Теперь вы можете начать работать на удаленном рабочем столе с локального компьютера с помощью клавиатуры и мыши.
Вывод
Мы показали вам, как настроить сервер VNC и подключиться к удаленному компьютеру с CentOS 8.
Чтобы запустить представление для нескольких пользователей, повторите те же действия. Создайте первоначальную конфигурацию, установите пароль с помощью команды vncserver
и создайте новый файл службы, используя другой порт.