Установка и настройка VNC Server на Debian/Ubuntu/Linux Mint

Установка и настройка VNC Server на Debian/Ubuntu/Linux Mint

Virtual Network Computing (VNC) — система для подключения к рабочему столу удаленно используя протокол RFB (англ. Remote FrameBuffer, удалённый кадровый буфер).

VNC состоит из VNC-клиента, который называется VNC viewer, он только запущен на одной ОС и можно подключаться к VNC-серверу который работает на другой операционной системе. Реализация клиентской и серверной части есть почти для всех ОС, даже для Java (которая включает J2ME). На один VNC-сервер одновременно могут быть подключены большое множество клиентов. Наиболее популярный способ использования VNC — это удалённое подключение к рабочему компьютеру из дома для технической поддержки вашего сервера. В своей статье «Установка и настройка VNC Server на Debian/Ubuntu/Linux Mint» я расскажу как это можно сделать.

Чтобы установить VNC, достаточно выполнить команду:

# apt-get install vnc4server

Вы можете использовать любого пользователя для входа в свой VNC Server, но по соображениям безопасности, я собираюсь создать VNC пользователя для моего VNC Server-а:

# adduser vncuser

Устанавливаем для него пароль:

# passwd vncuser

Теперь переключимся на этого пользователя (vncuser) для создания некоторых конфигурационных файлов для VNC:

# su - vncuser

После этого, запускаем VNC сервер:

$ vncserver

После запуска VNC-сервера, вам будет предложено создать VNC пароль. Устанавливаем любой удобный для вас пароль, но не более 9 символов ( если больше, то он обрежит его).

На рисунке ниже видно как стартанул наш vnc сервер, но нам его нужно немного подредактировать:

запуск vncserver

запуск vncserver

Чтобы сделать настройку в сценарие запуска, мы должны убить сессию, что мы только что создали:

# vncserver -kill :1

После чего нужно открыть и поправить файл конфигурации:

# cd ~
# vim .vnc/xstartup

Измените немного конфигурацию по вашему усмотрению ( у меся я поправил разрешение экрана), мой готовый конфигурационный файл я выложил и прочитать его можно тут, чтобы скачать используйте команду:

# wget http://linux-notes.org/wp-content/uploads/files/vnc_server/xstartup

После чего запускаем нашу сессию с  разрешением экрана 1024×600:

# vncserver -geometry 1024x600

Установка Gnome X Window для Ubuntu (на стороне клиента, можно установить и другую среду):

# apt-get install gnome-core

Вот еще моя статья как установить другую графическую оболочку:
Установка GUI на Debian/Ubuntu/Mint

PS: не забываем прописывать нужную строку в конфиг xstartup.

Если вы решите использовать другие графические интерфейсы:

Для Gnome-Desktop Environment

[...]
gnome-session &
[...]

Для KDE-Desktop Environment

[...]
startkde &
[...]

Для MATE-Desktop Environment

[...]
mate-session &
[...]

Для LXDE-Desktop Environment

[...]
startlxde &
[...]

Для Cinnamon-Desktop Environment

[...]
cinnamon &
[...]

Для Openbox-Desktop Environment

[...]
openbox &
[...]

Я собрал это все до кучи и закоментировал не нужные строки, оставил только gnome, т.к я его устанавливал. Вы можете скачать данный конфиг и отредактировать его для настройки своего VNC сервера (для своего графического интерфейса):

# wget http://linux-notes.org/wp-content/uploads/files/vnc_server/Debian/xstartup

Я приведу пример со своим использованием, я юзаю windows 8, по этому я скачал vnc- viewer.

Использование VNC Viewer для просмотра и управления VNC-сервера с удаленного хоста.

Перед тем как использовать vnc-viewer, нужно его скачать. После чего запускаем его и вводим в поле IP адрес хоста (у меня это сделать не получилось и не знаю по чему), я использую виртуальную машину, по этому я ввел следующее:
ubuntu:1

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

После перезагрузки сервера, мы не будем иметь возможность подключиться к серверу с VNC, это потому, что команда «vncserver -geometry 1024×600» , что мы набрали выше не является постоянным. Чтобы решить эту проблему, я будем использовать отличный сценарий Джастин Buser.

Для начала создадим следующее:

# sudo mkdir -p /etc/vncserver
# sudo touch /etc/vncserver/vncservers.conf
# sudo vim /etc/vncserver/vncservers.conf

И добавляем:

VNCSERVERS="1:vncuser"
VNCSERVERARGS[1]="-geometry 1024x600 -depth 24"

Затем создайте пустой сценарий инициализации и сделайте его исполняемым:

# sudo touch /etc/init.d/vncserver
# sudo chmod +x /etc/init.d/vncserver
# sudo vim /etc/init.d/vncserver

И добавьте текст который можно найти и прочитать тут, так же можете просто его скачать и разместить у себя ( только не забудьте сделать его исполняемым):

# wget http://linux-notes.org/wp-content/uploads/files/vnc_server/vnc_server

Обновим все это:

# sudo update-rc.d vncserver defaults 99

Сейчас перезапустим наш сервер:

# sudo service vncserver restart

Если вы не можете получить доступ к VNC-сервера, то убедитесь, что вы открыли порты VNC в IPTables:

# iptables -L -n

если не открыли, то открываем их:

# iptables -A INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 5901:5903,6001:6003 -j ACCEPT

и сохраняем все изменения:

# iptables-save

Делаем возможность подключения для нескольких пользователей.

Создание локального пользователя, с помощью следующей команды:

# sudo adduser cap

Переключитесь на вновь созданного пользователя и запустить этого vncserver командой:

# su cap
# vncserver
vncserver для дополнительного сервера

vncserver для дополнительного сервера

Перейдем в домашнюю директорию и отредактируем файл XStartup:

# cd ~
# vim .vnc/xstartup

и вставляем в этот файл тоже самое что и для моего первого юзера, берем его от сюда.

Теперь откройте файл  /etc/vncserver/vncservers.conf как рут пользователь:

# sudo vim /etc/vncserver/vncservers.conf

Добавим в уже имеющийся конфиг:

SERVERS="1:vncuser 2:cap"
VNCSERVERARGS[1]="-geometry 1024x600 -depth 24"
VNCSERVERARGS[2]="-geometry 1024x600"

Ребутим наш сервер:

# sudo service vncserver restart

Предотвращение запуск Gnome при загрузке на сервере.

Гном автоматически запускается при загрузке в Ubuntu 12.04 LTS, если мы подключить монитор к нашему серверу мы увидим, что GUI запустился и ждет чтобы мы вошли, это не очень удобно. Сейчас мы это исправим. Чтобы  это предотвратить нужно отредактировать файл gdm.conf:

# sudo vim /etc/init/gdm.conf

Нужно в этом файле конфигурации закомментировать  6 строчек:

#start on ((filesystem
# and runlevel [!06]
# and started dbus
# and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
# or stopped udev-fallback-graphics))
# or runlevel PREVLEVEL=S)

VNC шифрование через ssh туннель

По умолчанию, VNC не является безопасным протоколом, по этому  (так безопаснее) мы запустим сервер VNC только на 127.0.0.1 (локальный) и пробросим его через туннель SSH (для этого, есть варианты в Putty).

В Ubuntu нужно отредактировать:

# sudo vim /etc/vncserver/vncservers.conf

Нужно добавить опцию «-localhost»

проксирование vnc-server на localhost

проксирование vnc-server на localhost

Перезапустим сервер:

# sudo service vncserver restart

Запустите PuTTY/ Kitty, введите IP-адрес или имя хоста сервера VNC:

использование vnc через kitty

использование vnc через kitty

Переходим на другую вкладку, Session->Connection->SSH.

использование vnc через kitty, настройка

использование vnc через kitty, настройка

Через команду можно посмотреть что все работает:

# netstat -a

После чего уже запускаем непосредственно, vnc viewer и прописываем заместо нашего реального ИП, localhost:1 (или 2). Вводим пароль и можно использовать.

Надеюсь что эта статья «Установка и настройка VNC Server на Debian/Ubuntu/Linux Mint» помогла вам и на этом я закончу ее.

 

 

4 thoughts on “Установка и настройка VNC Server на Debian/Ubuntu/Linux Mint

  1. Все настроил как тут описано, но в итоге после отключения завершается сеанс, это очень не удобно.
    Как сделать что бы он не завершался

  2. А не подскажете, как лучше настроить сервер, для того что бы клиент мог работать на двух мониторах? Находил решение удвоить значение width в geometry (например, два монитора по 1024×800, то значение -geometry 2048×800, в фулскрин-моде ложится на два монитора). А вот если мониторы разные?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.