Настраиваем VNC. Вход в многопользовательскую систему через VNC

В этой статье мы рассмотрим шаги по установке и настройке VNC-сервера в системе CentOS 7. Мы также покажем вам, как безопасно подключаться к серверу VNC через туннель SSH.

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

Предпосылки

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

Установка среды рабочего стола Xfce

Установка CentOS-сервера часто не связана с установленной настольной средой, поэтому мы начнем с установки легкой рабочей среды.

В этой статьи мы установим Xfce. Он быстрый, стабильный и низкий на системных ресурсах, что делает его идеальным для использования на удаленных серверах.

Пакеты Xfce доступны в репозиториях EPEL. Если на вашем сервере нет репозитория EPEL, вы можете сделать это, набрав:

Sudo yum install epel-release

После добавления репозитория установите Xfce на свой сервер CentOS, набрав:

Sudo yum groupinstall xfce

В зависимости от вашей системы, загрузка и установка пакетов и зависимостей Xfce может занять некоторое время.

Установка VNC-сервера

TigerVNC – это активно поддерживаемый высокопроизводительный VNC-сервер с .

Введите следующую команду для установки TigerVNC на вашем сервере CentOS:

Yum 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 /usr/bin/xauth: file /home/andreyex/.Xauthority does not exist New "server2.andreyex.com:1 (andreyex)" desktop at:1 on machine server2.andreyex.com Starting applications specified in /etc/X11/Xvnc-session Log file is /home/andreyex/.vnc/server2.andreyex.com:1.log

При первом запуске команды vncserver он создаст и сохранит файл пароля в каталоге ~/.vnc , который будет создан, если он отсутствует.

Обратите внимание, что:1 после имени хоста в выводе выше. Это указывает номер порта дисплея, на котором запущен сервер vnc. В нашем случае сервер работает на TCP-порту 5901 (5900 + 1). Если вы создадите второй экземпляр, vncserver он будет запущен на следующем свободном порту, т. Е. :2 Это означает, что сервер работает на порту 5902 (5900 + 2).

Важно помнить, что при работе с серверами VNC:X используется порт отображения 5900+X .

Прежде чем перейти к следующему шагу, сначала остановите экземпляр VNC с помощью команды vncserver с параметром -kill и номером сервера в качестве аргумента. В нашем случае сервер работает в порту 5901 (:1), поэтому мы остановим его:

Vncserver -kill:1 Killing Xvnc process ID 2432

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

Теперь, когда и Xfce, и TigerVNC установлены на нашем CentOS-сервере, следующим шагом будет настройка TigerVNC для использования Xfce. Для этого откройте следующий файл:

Nano ~/.vnc/xstartup

И изменить последнюю строку exec /etc/X11/xinit/xinitrc на exec startxfce4:

#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec startxfce4

Сохраните и закройте файл. Приведенный выше сценарий будет автоматически запускаться при каждом запуске или перезапуске сервера TigerVNC.

Если вам нужно передать дополнительные параметры на сервер VNC, вы можете открыть файл ~/.vnc/config и добавить один вариант на строку. Наиболее часто используемые параметры перечислены в файле. Раскомментируйте и измените по своему вкусу.

Вот пример:

# securitytypes=vncauth,tlsvnc # desktop=sandbox geometry=1920x1080 # localhost # alwaysshared dpi=96

Создание файла unitd unit

Мы создадим системный файл systemd, который позволит нам легко запускать, останавливать и перезапускать службу VNC по мере необходимости, так же, как и любую другую службу systemd.

Sudo cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service

Откройте файл с помощью текстового редактора и замените его на фактическое имя пользователя.

Sudo nano /etc/systemd/system/vncserver@\:1.service

/etc/systemd/system/vncserver@:1.service

Description=Remote desktop service (VNC) After=syslog.target network.target Type=forking # Clean any existing files in /tmp/.X11-unix environment ExecStartPre=/bin/sh -c "/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :" ExecStart=/usr/sbin/runuser -l andreyex -c "/usr/bin/vncserver %i" PIDFile=/home/andreyex/.vnc/%H%i.pid ExecStop=/bin/sh -c "/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :" WantedBy=multi-user.target

Сохраните и закройте файл. Сообщите системе, что мы создали новый файл с помощью:

Sudo systemctl daemon-reload

Следующий шаг – включить файл устройства со следующей командой:

Sudo systemctl enable vncserver@:1.service

Число 1 после знака @ определяет порт отображения, на котором будет работать служба VNC, в нашем случае это значение по умолчанию, 1 и сервер VNC будет прослушивать порт, 5901 как мы обсуждали в предыдущем разделе.

Запустите службу VNC, выполнив:

Sudo systemctl start vncserver@:1.service

Убедитесь, что служба успешно запущена:

Sudo systemctl status vncserver@:1.service ● vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2018-09-16 09:59:53 UTC; 4s ago Process: 6391 ExecStart=/usr/sbin/runuser -l andreyex -c /usr/bin/vncserver %i (code=exited, status=0/SUCCESS) Process: 6389 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) Main PID: 6413 (Xvnc) CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service ‣ 6413 /usr/bin/Xvnc:1 -auth /home/andreyex/.Xauthority -desktop server2.andreyex.com:1 (andreyex) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /home/andreyex/.vnc/passwd -rfbport ...

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

VNC не является зашифрованным протоколом и может подвергаться сниффингу пакетов. Рекомендуемый подход заключается в создании туннеля SSH, который будет безопасно перенаправлять трафик с вашего локального компьютера на порт 5901 на сервер в том же порту.

Настройка туннелирования SSH на Linux и macOS

Если вы запускаете на вашем компьютере , macOS или любую другую операционную систему на базе Unix, вы можете легко создать туннель SSH с помощью следующей команды:

Ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address

Вам будет предложено ввести пароль пользователя.

Не забудьте заменить username и server_ip_address на ваше имя пользователя и IP-адрес вашего сервера.

Настройка SSH-туннелирования в Windows

Если вы запустите Windows, вы можете настроить туннелирование SSH с помощью клиента PuTTY SSH.

Откройте Putty и введите IP-адрес вашего сервера в поле Host name or IP address .

Затем из окна Category: разверните SSH и выберите Tunnels . Введите порт сервера VNC (5901) в поле Source Port и введите server_ip_address:5901 в поле Destination и нажмите кнопку Add , как показано на рисунке ниже:


Подключение с помощью Vncviewer

Теперь, когда вы настроили туннелирование SSH, пришло время открыть Vncviewer и подключиться к VNC-серверу localhost:5901 .

Вы можете использовать любые средства просмотра VNC, такие как TigerVNC, TightVNC, RealVNC, UltraVNC Vinagre и VNC Viewer для Google Chrome.

В этом примере мы будем использовать TigerVNC. Откройте средство просмотра VNC, введите localhost:5901 и нажмите кнопку Connect .


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


Теперь вы можете начать взаимодействие с удаленным рабочим столом XFCE на вашей локальной машины с помощью клавиатуры и мыши.

Вывод

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

Чтобы настроить VNC-сервер для запуска отображения для нескольких пользователей, создайте начальную конфигурацию и настройте пароль с помощью команды vncserver и создайте новый файл службы с помощью другого порта.

Недавно встала задача настроить удалённый доступ по VNC к рабочему столу Ubuntu, и ничто не предвещало беды, т.к. в последних версиях Ubuntu есть встроенный VNC-сервер Vino, который прекрасно работает. Но на Ubuntu 14.04 почему-то работать он отказался, подключение заканчивалось ошибкой » no supported authentication methods!», и никакие манипуляции с настройками проблему не решили. Чтобы не тратить время зря, я решил воспользоваться альтернативным VNC-сервером — X11vnc. Давайте разберёмся, как его настроить.

Установка и настройка X11vnc на Ubuntu 14.04

Первым делом давайте удалим Vino, всё равно корректной работы от него добиться не удаётся, да и в функциональности X11vnc он несколько проигрывает.

Удалим Vine

Для этого открываем терминал и вводим:

Sudo apt-get remove vino

По запросу вводим пароль администратора, подтверждаем удаление.

Теперь установим X11vnc (необходимо подключение к сети Интернет), всё очень просто — вводим в терминале команду:

Sudo apt-get install x11vnc

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

Соглашаемся с записью пароля в файл

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

X11vnc -storepasswd

Вводим пароль два раза, после соглашаемся на запись в файл. Пароль будет сохранён в файл /home/USER/.vnc/passwd (где «USER» — имя пользователя, под которым мы совершаем настройку, у меня, например, пользователь именуется «test»).

В общем-то уже можно пользоваться, но это будет не слишком удобно по нескольким причинам:

  • X11vnc не будет запускаться при загрузке системы, это не удобно, так как каждый раз для удалённого подключения придется вручную запускать VNC сервер, а это иногда просто не возможно.
  • Если за удалённым компьютером не зарезервирован IP-адрес, то будет непонятно, куда подключаться (или пробрасывать порт), и каждый раз перед подключением нам каким-то образом придётся узнавать IP-адрес удалённого компьютера.

Давайте решим данные проблемы.

Автозагрузка X11vnc на Ubuntu

Тут всё тоже очень просто. Первым делом с помощью встроенного текстового редактора Gedit создадим файл /etc/init/x11vnc.conf, для этого в терминале вводим:

Sudo gedit /etc/init/x11vnc.conf

По запросу вводим пароль администратора. Откроется текстовый редактор, в тело открытого файла пишем:

Start on login-session-start script x11vnc -dontdisconnect -display:0 -auth /var/run/lightdm/root/:0 -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log -rfbauth /home/USER/.vnc/passwd end script

В предпоследней строчке вместо «USER» необходимо указать имя пользователя, под которым выполнялась настройка, у меня это «test».

Теперь при включении удалённого компьютера X11vnc будет включаться автоматически. Что важно — запуск сервера будет происходить до авторизации пользователя.

Сетевые настройки для VNC

Теперь давайте разберёмся с IP-адресом.

Жмём на «стрелки»

Жмём на иконку передачи данных в правом верхнем углу экрана и в открывшемся списке выбираем «Изменить соединение».

Изменим способ настройки

В открывшемся окне выбираем используемое соеденение (у меня это «Проводное соединение 1») и правее жмём «Изменить».

В открывшемся окне переходим на вкладку «Параметры IPv4», выбираем из выпадающего списка способ настройки «Вручную».

Ниже жмём «Добавить» и прописываем сетевые настройки, которые соответствуют настройкам DHCP-сервера Вашего маршрутизатора (в столбце «Адреса» будет постоянный IP-адрес удалённого компьютера).

Когда все сетевые параметры вписаны, сохраняем

На этом настройка удалённого доступа на Ubuntu закончена — теперь при включении компьютера у нас автоматически запустится настроенный VNC-сервер, и мы сможем удалённо подключиться.

Подключение к удалённому компьютеру по VNC с Windows

Всё настроено, осталось только подключиться. Для этого нам понадобится VNC-клиент. Я использую UltraVNC Viewer (скачать можно прямо с официального сайта бесплатно — ссылка , зеркало — ссылка (v. 1.2.0.3)).

После загрузки запускаем *.exe файл и, следуя инструкциям установщика, инсталлируем программу. После завершения запускаем.

Указываем IP сервера

Настройки очень простые: в поле «VNC Server:» вписываем IP-адрес (который получает удалённый компьютер) и жмём «Connect». После будет запрошен пароль — вводим пароль и жмём «Log On».

Подключение произошло

Произойдёт подключение к удёлённому компьютеру, можно пользоваться 🙂

Почему не заработал Vino — остаётся загадкой.. С такими же настройками на прошлых версиях Ubuntu всё работало. Если кому-нибудь известна причина — пишите в комментариях.

Исходя из названия приложения VNC Viewer, многие пользователи сразу могут догадаться, к какому классу программного обеспечения оно относится, например, проведя аналогию с известным пакетом TeamViewer. Однако рядовые пользователи могут столкнуться с такой утилитой впервые, поэтому стоит отдельно остановиться на некоторых вопросах, связанных с тем, как и какую модификацию программы лучше установить, как настроить приложение для оптимального режима работы, как пользоваться VNC Viewer, «выжав» из приложения максимум его возможностей.

Общие сведения о программе VNC Viewer

Для начала кратко остановимся на том, что представляет собой этот программный продукт, рассмотрим, для чего он предназначен. Исходя из выше приведенной аналогии, можно сказать, что VNC-клиент — это универсальное приложение, позволяющее в считаные минуты организовать доступ к удаленному компьютеру.

То есть данную программу можно отнести к классу RDP-приложений, предназначенных для подключения к удаленному «Рабочему столу». Однако только доступом к удаленным компьютерам дело не ограничивается, поскольку в самой программе имеется еще немало дополнительных возможностей:

  • Полное управление настройками без ограничений в полноэкранном или оконном режиме.
  • Трансфер файлов.
  • Возможность отсылки сообщений через встроенный чат.
  • Блокирование периферийных устройств, если это необходимо (мыши, клавиатуры и т. д.).
  • Возможность доступа к подключенным ПК через браузер.
  • Организация подключения с несколькими терминалами одновременно.

Сразу же стоит отметить, что технология Virtual Network Computing (VNC)имеет и еще одно неоспоримое преимущество, если сравнивать с аналогами. Дело в том, что в ней есть возможность установки серверной и клиентской части (в зависимости от того, какой именно тип подключения будет использоваться в дальнейшем), плюс, тонкая настройка ПО для каждого варианта установки с целью обеспечения максимальной производительности.

Особенности выбора инсталляционного дистрибутива

Прежде чем приступать к установке, необходимо определиться с выбором модификации VNC-клиента, который предполагается установить. Во-первых, сама программа является кроссплатформенной, может инсталлироваться практически во все известные стационарные и мобильные операционные системы. Во-вторых, для тех же ОС Windows можно найти версии программы RealVNC, TightVNC, UltraVNC и облегченную модификацию UltraVNC SC (все версии совместимы между собой, однако некоторые функции могут оказаться недоступными), для Mac OS X - Chicken и JollysFastVNC. В-третьих, следует определиться с типом устанавливаемого клиента (серверная часть используется для организации подключения с центральной машины к дочерним терминалам, а клиентская - для подключения с дочерних машин к центральному серверу).

В-четвертых, непосредственно на официальном ресурсе разработчика можно выбрать предпочитаемый формат файла установщика VNC Viewer для Windows (EXE, MSI) или загрузить дистрибутив в виде запакованного архива ZIP. Последний пункт - по желанию пользователя.

Установка VNC Viewer

Теперь перейдем непосредственно к инсталляции выбранного программного продукта. Заметим, что практически для всех модификаций процесс установки выглядит одинаково.

Для старта инсталляции в Windows версий 7 и выше файл установщика VNC-клиента запускается исключительно с администраторскими привилегиями (в меню ПКМ выбирается пункт запуска от имени администратора). В самом процессе инсталляции нет ничего необычного.

Пользователю нужно выбрать предпочитаемый язык, принять условия лицензионного соглашения, указать путь установки (его можно не менять), на одной из стадий добавить значок на «Рабочий стол», а затем просто нажать кнопку старта установки.

Первый запуск приложения

Предположим, что программа инсталлирована, а пользователь производит ее первый запуск. Изначально настройки VNC Viewer не очень сложные. При первом старте будет показано окно, в котором можно выбрать желаемое действие. Но будем исходить из того, что нам нужно осуществить подключение самостоятельно.

Как пользоваться VNC Viewer?

Сначала через файловое меню выбираете пункт нового подключения (New Connection), а затем в новом окне вводите IP-адрес удаленного терминала или полное название компьютера (адрес можно узнать на подключаемой машине, воспользовавшись свойствами интернет-соединения или командной строкой с вводом команды ipconfig, а имя компьютера можно просмотреть в свойствах системы). После этого появится окошко запроса пароля, в котором нужно ввести искомую комбинацию. При соответствии комбинации установленному на удаленном компьютере паролю появится удаленный «Рабочий стол».

Как пользоваться VNC Viewer для создания подключения, мы разобрались. Теперь несколько слов по поводу предпочитаемых настроек.

Если внимательно посмотреть на окно создания соединения, в нем можно обнаружить вкладку для экспертов. Если в этих настройках выбрать, например, предпочитаемые алгоритмы сжатия передаваемых и принимаемых данных, то можно существенно снизить нагрузку на центральный процессор и оптимизировать применение технологии Virtual Network Computing даже для сетей с пропускной способностью на уровне 256 кбит/с. Для графики рекомендуется устанавливать высокий уровень компрессии (Compression Level) с минимальным качеством (JPEG Quality), а в качестве дополнительной оптимизации активировать уменьшение количества цветов (Restricted Colors или bgr233).

Кроме того, стоит обратить внимание, что на одном терминале может использоваться подключение к нескольким машинам на основе базового порта 5900 через параметр дисплея. По умолчанию основной дисплей имеет значение «0», а для всех остальных оно увеличивается («1», «2» и т. д.). Соответственно, изменятся порт (5901, 5902 и т. д.), который нужно будет указывать после адреса через двоеточие (например, 192.168.0.5:5901). В случае с динамическими (а не статическими) адресами, дополнительно можно воспользоваться получением динамического DNS, например, на основе DynDNS. Можно выставить такую настройку на маршрутизаторе или зарегистрироваться на портале сервиса в интернете. В этом случае служба будет передавать установленному клиенту все сведения, связанные с изменением IP подключаемого компьютера.

Возможные сбои в работе программы

В основном сбои могут быть связаны только с тем, что в данный момент на компьютере попросту отсутствует интернет-подключение или занят соответствующий порт, используемый программой по умолчанию. Иногда можно заметить блокировку со стороны антивирусов и файрволов. Но решаются эти проблемы достаточно просто.

Некоторые распространенные методы устранения проблем

Среди основных методов устранения возможных сбоев при попытке установки подключения можно порекомендовать следующие:

  • Внесите установленную программу в список приложений, которым разрешено использовать интернет-соединение в брандмауэре Windows.
  • Создайте новые правила для порта 5900 исходящего и входящего подключений.
  • Если предыдущее решение не поможет, выполните проброс порта 5900 на маршрутизаторе.
  • Внесите программу в список исключений антивируса.
  • Проверьте правильность указания статического адреса и пароля доступа к удаленному терминалу.

Итоги

Вот кратко и все, что касается вопроса, как пользоваться VNC Viewer. Как видим, ничего особо сложного тут нет. В завершение стоит отметить, что в некоторых случаях целесообразно использовать не пароли, устанавливаемые непосредственно в операционных системах, а заранее выполнять вход в регистрационную запись в самом клиенте, предварительно создав ее на специальном ресурсе. В этом случае вы не будете зависеть от учетных записей на Windows.

Сегодня я расскажу про установку и настройку vnc сервера tightvnc в ubuntu 14.04 и 16.04. Сначала поговорим о том почему я выбрал именно tightvnc. Когда я первый раз ставил vnc сервер, я сначала поставил x11vnc, его описывали как легкий в установке и удобный vnc сервер. Так и есть, все работает «из коробки», но вот незадача — этот vnc сервер работает с уже существующей сессией пользователя, а не создает новую. То есть он подключается к текущему рабочему столу пользователя. Многим это подойдет, но мне нужен был такой vnc сервер, который бы при запуске создавал новую сессию. Тут на помощь мне и пришел tightvnc сервер. При запуске tightvnc сервер создает новую сессию для пользователя. Плюсы такого сервера в том, что можно задать произвольное разрешение создаваемого рабочего стола, в независимости от ограничений, наложенных системой компьютера. Например, если удаленный компьютер позволяет выставить максимальное разрешение 1280х1024, это никак не помешает создать с помощью tightvnc сервера рабочий стол с разрешением еще больше. Так же с помощью tightvnc сервера можно создать несколько рабочих столов. Это очень удобно когда необходимо организовать работу для нескольких пользователей на одном компьютере.

И так, давайте приступим к установке tightvnc server в ubuntu 16.04 и 14.04 :

Sudo apt-get install tightvncserver

Запуск tightvnc : в терминале набираем (запуск от текущего пользователя, sudo не нужен)

Vncserver

При первом запуске нужно будет ввести пароль доступа к vnc серверу (минимум 6 символов), и по желанию пароль доступа в режиме «только просмотр».

По умолчанию порт tightvnc сервера 5901. Можно указать другой порт так:

Vncserver:2

При этом tightvnc сервер будет запущен на порту 5902.

Запуск tightvnc server с заданным разрешением экрана осуществляется с параметром geometry, например:

Vncserver -geometry 1280x1024

То есть, если в терминале набрать:

Vncserver -geometry 1280x1024:3

то на порту 5903 будет запущен vnc сервер с разрешением рабочего стола 1280×1024 пикселей. Есть еще куча параметров — глубина цвета и много чего еще, в этой статье рассматриваются только основные.

Остановка tightvnc server :

Vncserver -kill:1

Будет остановлен vncserver на порту 5901.

Настройка tightvnc server

При установке tightvnc server в каталоге /home/пользователь/.vnc создается скрипт запуска, который называется xstartup. Дело в том, что при создании новой сессии tightvnc server запускает обычные иксы, а xstartup — конфигурационный файл для создаваемой x-сессии, в котором нужно указывать все программы, которые должны загружаться при старте x-сессии, вплоть до таких, как оконный менеджер, например. Вот почему, если не редактировать скрипт запуска и подключится к tightvnc серверу, то вы увидите просто серый экран. Чтобы это исправить, давайте отредактируем файл /home/пользователь/.vnc/xstartup. Первое, что нам понадобится — это добавить туда оконный менеджер. Я рекомендую оконный менеджер «metacity». Установим его:

Sudo apt-get install metacity

После установки добавим строку «metacity &» в файл xstartup:

#!/bin/sh xrdb $HOME/.Xresources #xsetroot -solid grey metacity &

Далее нужно запустить одно приложение, хотя бы терминал. В зависимости от версии дистрибутива linux команды для запуска терминала могут различаться. У меня установлен gnome-terminal. В вашем случае он может не быть установлен, а установлен xterm например. Вообщем, смотрите логи, если у вас ничего не запустится. Логи находятся в той же папке, что и xstartup.

Добавьте строку терминала следующей строкой после «metacity &»:

Gnome-terminal &

В принципе, это минимально возможная конфигурация, так как из терминала можно запустить любое приложение, но мы, чтобы до конца понять суть xstartup, добавим туда еще и браузер firefox. Все вместе получится приблизительно так:

#!/bin/sh xrdb $HOME/.Xresources #xsetroot -solid grey metacity & gnome-terminal & firefox # Fix to make GNOME work export XKL_XMODMAP_DISABLE=1 /etc/X11/Xsession

После внесения изменений в xstartup обязательно перезапустите tightvnc server, если он был запущен. Сейчас после подключения к tightvnc серверу на рабочем столе должен появится открытый терминал и браузер firefox. Но это еще не все. При желании вы можете добавить туда множество приложений, nautilus например, ну вообщем по вашему усмотрению. Я бы рекомендовал добавить док панель вместо них, например gnome-panel, чтобы каждый раз не лезть в терминал для запуска того или иного приложения. Давайте установим ее:

Sudo apt-get install gnome-panel

И добавим ее в файл xstartup вместо приложений terminal и firefox:

#!/bin/sh xrdb $HOME/.Xresources #xsetroot -solid grey metacity & gnome-panel # Fix to make GNOME work export XKL_XMODMAP_DISABLE=1 /etc/X11/Xsession

Теперь при старте x-сессии будет запускаться панель gnome.

Вот и все, настройку tightvnc server на этом можно завершить. Но для прожженных гномоводов у меня еще кое что есть, при старте x-сессии можно запустить gnome сессию. Вот скрипт запуска для gnome сессии:

#!/bin/sh gnome-session & gnome-panel & gnome-settings-daemon & metacity export XKL_XMODMAP_DISABLE=1 #/etc/X11/Xsession

Хочу предупредить, что у меня в gnome сессии возникали глюки с браузерами: раскладка не переключалась, некоторые клавиши срабатывали неправильно. Вообщем смотрите что для вас лучше — иксы или gnome сессия.

VNC (Virtual Network Computing) – это система удалённого доступа, которая позволяет использовать клавиатуру и мышь для взаимодействия с графическим интерфейсом рабочего стола удалённого сервера. С её помощью можно управлять файлами, программным обеспечением и настройками удалённого сервера, не обращаясь к командной строке.

Данный мануал поможет установить VNC на виртуальный выделенный сервер Ubuntu 16.04 и настроить безопасное подключение при помощи SSH-туннеля. Сервер VNC будет использовать TightVNC , быстрый и легковесный пакет удалённого управления, поддерживающий работу даже при медленном интернете.

Требования

  • Сервер Ubuntu 18.04, настроенный по .
  • Локальный компьютер с предустановленным клиентом VNC, который поддерживает VNC-соединения через SSH-туннель. Пользователи Windows могут установить TightVNC , RealVNC или UltraVNC . Пользователи Mac OS X могут обратиться к встроенному пакету Screen Sharing или использовать кроссплатформенные приложения (например, RealVNC). Пользователи Linux могут выбрать vinagre, krdc, RealVNC , TightVNC и т.п.

1: Установка среды рабочего стола и сервера VNC

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

Чтобы установить на сервер указанные пакеты, обновите индекс и введите команду:

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:

Пароль должен быть длинной от шести до восьми символов. Более длинные пароли будут автоматически сокращены до 8 символов.

После того как вы подтвердите пароль, у вас будет возможность создать пароль только для просмотра. Пользователи, получающие доступ к VNC при помощи пароля для просмотра, не смогут управлять VNC через мышь или клавиатуру. Такой пароль позволяет вам демонстрировать VNC другим пользователям в случае необходимости.

Затем процесс завершит начальную настройку VNC и создаст конфигурационные файлы.

Would you like to enter a view-only password (y/n)? n
xauth: file /home/8host/.Xauthority does not exist
New "X" desktop is your_hostname:1
Creating default startup script /home/8host/.vnc/xstartup

2: Настройка сервера VNC

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

При первом запуске VNC использует порт 5901. VNC называет этот порт:1. VNC может запускать другие экземпляры на другие порты, которые будут называться:2, :3, и т.д.

Чтобы изменить настройки сервера VNC, нужно остановить экземпляр, использующий порт 5901.

vncserver -kill:1

Команда вернёт такое сообщение (PID будет отличаться):

Killing Xtightvnc process ID 17648

Создайте резервную копию файла xstartup:

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Затем создайте новый файл xstartup:

nano ~/.vnc/xstartup

Вставьте в него следующие команды, которые будут выполняться автоматически при запуске сервера VNC. Сохраните и закройте файл.

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

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

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

sudo chmod +x ~/.vnc/xstartup

Перезапустите VNC:

Во время запуска сервер вернёт:

New "X" desktop is your_hostname:1
Starting applications specified in /home/8host/.vnc/xstartup
Log file is /home/8host/.vnc/your_hostname:1.log

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

При подключении VNC не использует безопасные протоколы. Создайте SSH-туннель для безопасного подключения к серверу, а затем настройте клиент VNC для поддержки туннеля вместо прямого подключения.

Создайте на локальном компьютере соединение SSH, которое перейдет в localhost соединение для VNC. Вы можете сделать это в Linux или macOS через терминал с помощью следующей команды:

Флаг -L указывает привязки портов. В этом случае мы привязываем порт 5901 удаленного подключения к порту 5901 на локальном компьютере. Флаг -C включает сжатие, а -N сообщает ssh, что выполнять удаленную команду не нужно. Параметр -l указывает имя удаленного входа.

Не забудьте заменить 8host и your_server_ip своими данными.

Если вы работаете через графический SSH-клиент, например PuTTY, используйте настройках SSH-туннеля your_server_ip в качестве IP-соединения и установите localhost: 5901 в качестве нового порта.

Когда туннель запустится, используйте VNC клиент для подключения к localhost:5901. При этом будет запрошен пароль, который вы выбрали в разделе 1.

После этого вы увидите стандартный экран Xfce.

Вы можете получить доступ к файлам в своем домашнем каталоге с помощью диспетчера файлов или из командной строки.

Нажмите CTRL + C в терминале, чтобы закрыть туннель SSH и вернуться в командную строку. Это также завершит ваш сеанс VNC.

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

Теперь нужно настроить сервер VNC как сервис system.

Создайте новый юнит-файл /etc/systemd/system/[email protected]:

sudo nano /etc/systemd/system/[email protected]

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

Добавьте в файл следующие строки. Обязательно измените значение User, Group, WorkingDirectory и имя пользователя в значении PIDFILE.

/etc/systemd/system/[email protected]
Description=Start TightVNC server at startup
After=syslog.target network.target
Type=forking
User=8host
Group=8host
WorkingDirectory=/home/8host
PIDFile=/home/8host/.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
WantedBy=multi-user.target

Команда ExecStartPre останавливает VNC, если сервис уже запущен. Команда ExecStart запускает VNC и устанавливает глубину цвета – 24-битный цвет с разрешением 1280×800. Вы также можете изменить эти параметры в зависимости от потребностей.

Сохраните и закройте файл.

Затем дайте сообщите системе про новый юнит файл.

sudo systemctl daemon-reload

Включите его:

sudo systemctl enable [email protected]

Цифра 1, идущая за @, определяет, какой номер дисплея должен отображаться в сервисе, в этом случае это значение по умолчанию.

Остановите текущий экземпляр сервера VNC, если он еще запущен.

vncserver -kill:1

Теперь попробуйте запустить его как любой другой сервис systemd:

sudo systemctl start vncserver@1

Чтобы убедиться, что сервер запущен, проверьте его состояние:

sudo systemctl status vncserver@1

[email protected] — Start TightVNC server at startup

Loaded: loaded (/etc/systemd/system/[email protected]; indirect; vendor preset: enabled)
Active: active (running) since Mon 2018-07-09 18:13:53 UTC; 2min 14s ago
Process: 22322 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800:1 (code=exited, status=0/SUCCESS)
Process: 22316 ExecStartPre=/usr/bin/vncserver -kill:1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS)
Main PID: 22330 (Xtightvnc)
...

Теперь сервис VNC добавлен в автозагрузку.

Снова запустите туннель SSH:

ssh -L 5901:127.0.0.1:5901 -C -N -l 8host your_server_ip

Создайте новое подключение с клиента VNC на localhost:5901, чтобы протестировать настройку.

Заключение

Теперь на сервере Ubuntu 18.04 установлен сервер VNC. С его помощью вы можете управлять файлами, программами и настройками удалённого сервера (например, удаленно запускать веб-браузер).

Tags: ,
Статьи по теме: