Ubuntu 16.04 установка vnc server. Настраиваем VNC. Сетевые настройки для VNC

Я решила сделать этот пост, потому что тема Образования, науки и коммерциализации изобретений-вопрос самый актуальный. Сегодня так совпало, что я смотрела программу Интерры и Конвента в Новосибирске, на которые еду,- и обнаружила массу секций по уже намозолившим глаз темам: «Наука, инновации и образование», потому что недавно я была на секции Инновационная инфраструктура российских ВУЗов в Перми, потому что помню, что видеопост в моем блоге про образование вызвал самое большое количество комментариев.

Я сама считаю, что наших ученых из-за границы (в силу многих причин) тащить обратно в Россию тяжело и не всегда оправданно: пусть лучше там лоббируют наши интересы и развивают международное сотрудничество. И вообще, почему это забывают тех, кто остался: они были тут в 90-е, они работают в разрушенных зданиях университетов на доисторическом оборудовании, но и они при этом умудряются делать существенные открытия и исследования. То есть, какой подход был бы более эффективен?

Чтобы не быть отвлеченной и теории попусту тут не публиковать: пишу реальные истории моих знакомых из реальной жизни. О практике.

У меня есть знакомый, ученый физик (56 лет), ему много раз предлагали уехать в Штаты на огромную для него зп, с хорошим социальным пакетом- не захотел, не стал. На мой вопрос: Почему? Ответил: «Потому что я должен своей стране за то, что у меня есть образование, потому что я хочу, чтобы наука тут развивалась, а не там, потому что я ученый в России».

С другой стороны, мои хорошие друзья, оба кандидаты наук, очень востребованные на Западе, уехали. Им по 30 лет. Живут в Швейцарии. Там же работают. Причем моя активно пропагандирующая коммунизм и любовь к родине подруга уехала туда, возращаться не хочет, НО развивает связи Вузов Швейцарии и России по ее профильной теме. Причем сама, без поддержки гос-ва, без грантов. Просто потому, что тоже верит, что Россия ей дала возможность получить отличное образование, с помощью которого она сейчас в Швейцарии, и что надо морально сделать полезное и общественно-важное для своей страны. Пафосно, но факт. Для нее в этом есть логика. Для меня в этом-эффективность и плюс.

Суть в том, что не важно, уехал ты или остался. Важно, что ты развиваешь связи и науку своей страны. Поэтому логика действий, по моим соображениям, должна быть иной. Равно как и то, что наука2.0- это огромная часть Электронного прав-ва и всего процесса Инновации-Модернизация в РФ. Так не надо делать ошибку, пытаясь кого-то вернуть. В нашем мире уже давно ни у науки, ни у инноваций нет границ. Система взаимодействия-в этом смысл. Если Шарапова тренируется в штатах- это не значит, что она не может представлять Россию.

Предлагаю послушать три программы на эти темы: неформальный и отличный подкаст

В этой статье мы рассмотрим шаги по установке и настройке 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 с поддержкой соединения через SSH тунель. Пользователям Windows мы рекомендуем RealVNC, UltraVNC или TightVNC. В Mac OS можно использовать стандартную утилиту Screen Sharing, или же в app store установить другие VNC приложения. Пользователи Linux имеют более широкий выбор программ, таких как krdc, vinagre, TightVNC, RealVNC, Remmina и др.

Установка Desktop Environment и сервера VNC

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

На заказанном сервере установите пакеты Xfce и TightVNC.

$ sudo apt install xfce4 xfce4-goodies tightvncserver

Для завершения первичной настройки VNC сервера после его установки воспользуйтесь командой vncserver для установки надёжного пароля.

$ vncserver

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

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

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

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

При первом запуске VNC запускает инстанс сервера по умолчанию на порту 5901. Этот порт называется портом отображения (display port), и в VNC он имеет обозначение:1. VNC может запускать много инстансов на других портах, например, :2, :3, и так далее. При работе с серверами VNC помните, что порт отображения с номером:X работает на порту 5900 X.

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

$ vncserver -kill:1

Вывод должен выглядеть похожим образом с точностью до идентификатора процесса (process ID):

Вывод
Killing Xtightvnc process ID 17648

Перед внесением изменений в новый файл xstartup, сделаем резервную копию исходного файла.

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

Теперь создадим новый файл xstartup используя nano или другой текстовый редактор.

$ nano ~/.vnc/xstartup

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

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

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

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

$ sudo chmod x ~/.vnc/xstartup

Теперь перезапустим сервер VNC.

$ vncserver

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

Вывод
New "X" desktop is your_server_name.com:1
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/liniverse.com:1.log

Тестирование рабочего стола VNC

Сперва создадим SSH соединение на локальной машине для установки безопасного соединения с VNC. Вы можете сделать это с помощью терминала на Linux или OS X следующей командой. Не забудьте заменить username и server_ip_address на имя своего пользователя с правами sudo и IP адрес вашего сервера.

$ ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address

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

Далее вы можете использовать свой клиент VNC для установки соединения с сервером VNC на localhost:5901 . Вам будет предложено аутентифицироваться. Используйте пароль, заданный вами на первом шаге.

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

Теперь вы имеете полный доуступ к управлению сервером и файлам в вашей домашней директории.

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

Сначала создадим юнит-файл /etc/systemd/system/ с помощью вашего текстового редактора:

$ sudo nano /etc/systemd/system/

Скопируйте и вставьте в него следующее содержимое. Убедитесь, что вы изменили значение поля User и имя пользователя в поле PIDFILE на ваши значения.

$ /etc/systemd/system/

Description=Start TightVNC server at startup
After=syslog.target network.target


Type=forking
User=sammy
PAMName=login
PIDFile=/home/sammy/.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

$ sudo systemctl daemon-reload

Активируем юнит-файл.

$ sudo systemctl enable

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

$ sudo systemctl start

Убедимся, что сервис запущен, этой командой:

$ sudo systemctl status >

Если запуск прошёл корректно, вывод должен выглядеть похожим образом:

Название Вывод
This email address is being protected from spambots. You need JavaScript enabled to view it. - TightVNC server on Ubuntu 16.04
Loaded: loaded (/etc/systemd/system/ ; enabled; vendor preset: enabled)
Active: active (running) since Mon 2016-04-25 03:21:34 EDT; 6s ago
Process: 2924 ExecStop=/usr/bin/vncserver -kill:%i (code=exited, status=0/SUCCESS) ... systemd: Starting TightVNC server on Ubuntu 16.04...
systemd: pam_unix(login:session): session opened for user finid by (uid=0)
systemd: Started TightVNC server on Ubuntu 16.04.

Готово! Вы смогли установить и настроить сервер VNC на вашем сервере с Ubuntu 16.04. Отныне Вы можете управлять файлами, программным обеспечением и настройками с помощью привычного графического интерфейса.

Работа с VNC-клиентом. Материал ориентирован на неопытного пользователя.

1. Установка VNC-клиента
2. Подключение VNC-клиента к удаленному компьютеру
3. Отключение VNC-клиента от удаленного компьютера
4. Тюнинг VNC-клиента
5. Частые проблемы

Для работы с удаленным компьютером по VNC на компьютере пользователя нужно запустить программу-клиент (VNC viewer, VNC client). Эта программа передает на удаленный компьютер данные о нажатиях на клавиши и о движениях мыши, сделанных пользователем, и показывает информацию, предназначенную к выводу на экран.

1. Установка VNC-клиента
Для ОС Windows можно бесплатно скачать и инсталлировать VNC-клиент UltraVNC и TightVNC .

Mac OS X начиная с версии 10.5 имеет поддержку VNC-клиента в RemoteDesktop . Для предыдущих версий можно использовать VNC-клиенты JollysFastVNC и .

Для Linux ветви Debian (Ubuntu) VNC-клиент устанавливается из репозитория командой:

Apt-get install vncviewer

Для ветви RedHat (CentOS, Fedora) - командой:

Yum install vnc

Для FreeBSD VNC-клиент (TightVNC) устанавливается из пакетов командой:

Pkg_add -r tightvnc

2. Подключение VNC-клиента к удаленному компьютеру
Для подключения VNC-клиента к удаленному компьютеру требуется указать его IP-адрес или DNS-имя, и номер дисплея (по умолчанию, :0) или номер TCP-порта (по умолчанию, 5900). Если VNC-сервер требует авторизации, то при подключении к нему VNC-клиент запросит пароль. Обратите внимание, что пароль доступа к VNC-серверу не связан с каким-либо аккаунтом (учетной записью пользователя) на удаленном компьютере, а служит только для ограничения доступа к дисплею VNC-сервера.

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

Так как на компьютере одновременно могут работать несколько VNC-серверов, для их разделения используют параметр номер дисплея . Например, один VNC-сервер может быть запущен на дисплее:0, другой - на дисплее:1. Каждому номеру дисплея соответствует номер TCP-порта, на котором VNC-сервер принимает соединения. Номер порта для дисплея получается прибавлением номера дисплея к базовому номеру порта - 5900. Дисплею:0 соответствует TCP-порт 5900, дисплею:1 - порт 5901.

3. Отключение VNC-клиента от удаленного компьютера
При закрытии окна VNC-клиента или после выхода из окружения средствами рабочего стола, в зависимости от настроек VNC-сервера, рабочая сессия пользователя может закрыться с остановкой всех используемых программ, или продолжать работу и быть доступной снова при повторном подключении к VNC-серверу.
4. Тюнинг VNC-клиента
Большое количество передаваемой на экран информации влечет за собой повышенные требования к скорости канала - к его пропускной способности и времени передачи пакетов. Нахватка пропускной способности приводит к некомфортным задержкам при больших изменениях показывамой на экране информации - открытии новых окон, скроллинге и т.д. Особенно большие задержки будут возникать при показывании фотографий и других изображений или элементов интерфейса, имеющих большое количество цветов и сложные формы.

Главный параметр, который влияет на объем передаваемых данных - алгоритм кодирования передаваемой графики. Для уменьшения объема и, соответственно, ускорения работы, рекомендуется использовать алгоритмы Tight, ZLib, ZRLE - по сравнению с несжатыми данными (Raw), они обеспечивают сжатие в десятки раз, заметно нагружая процессор. Эти алгоритмы кодирования обеспечивают комфортную работу даже на каналах со скоростью 256-512 Кбит/сек.

Для сокращения объема передаваемой по сети информации также можно устанавливать высокий уровень сжатия (Compression Level, Compression Value), низкий уровень качества JPEG (JPEG Quality) и включать режим уменьшения количества цветов (-bgr233, Restricted colors). Самый большой эффект из них при заметном снижении качества изображения дает режим уменьшения количества цветов - объем передаваемой информации уменьшается в 1.5-3 раза, соответственно, в 1.5-3 раза ускоряется отображение на экране.

JPEG применяется алгоритмом кодирования Tight для сжатия участков экрана, содержащих фотографии и другие сложные изображения с большим числом цветов. Использование Tight+JPEG сокращает в 2-5 раз объем передаваемых при этом данных. Другие алгоритмы кодирования JPEG не поддерживают.

1. Выпадающего меню «Система -> Параметры»

Объем передаваемых данных и скорость отображения на канале 1 Мбит/сек при открытии выпадающего меню «Система -> Параметры» (на рисунке меню выделено зеленым пунктиром):

5. Частые проблемы
Не удается подключиться к VNC-серверу
Нужно проверить:
  1. есть ли доступ к интернету;
  2. отвечает ли виртуальный сервер на пинги;
  3. запущен ли на виртуальном сервере VNC-сервер;
  4. нет ли по пути файервола, закрывающего доступ к TCP-порту VNC-сервера;
  5. правльно ли указан номер дисплея или TCP-порт VNC-сервера (номер порта = 5900 + номер дисплея).
Медленная работа через достаточно быстрый канал
Если VNC-клиент не может согласовать с VNC-сервером использование алгоритм кодирования графики с компрессией данных, выбирается алгоритм по умолчанию - Raw, который передает данные без сжатия. Также кодирование без сжатия или с низким уровнем сжатия может автоматически выбираться VNC-клиентом при работе через быструю локальную сеть. Данную проблему можно исправить, принудительно указав в настройках VNC-клиента алгоритм кодирования с высоким уровнем сжатия - ZLib, ZRLE, Tight.

Однако, для некоторых сочетаний клиента и сервера такое решение может быть бесполезным из-за ошибок в согласовании алгоритма кодирования. Например, клиент TightVNC с сервером RealVNC часто могут работать только с кодировкой Raw. Решением в этом случае будет смена VNC-клиента или VNC-сервера.