
Установка и настройка 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 -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
Перейдем в домашнюю директорию и отредактируем файл 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»
Перезапустим сервер:
# sudo service vncserver restart
Запустите PuTTY/ Kitty, введите IP-адрес или имя хоста сервера VNC:
Переходим на другую вкладку, Session->Connection->SSH.
Через команду можно посмотреть что все работает:
# netstat -a
После чего уже запускаем непосредственно, vnc viewer и прописываем заместо нашего реального ИП, localhost:1 (или 2). Вводим пароль и можно использовать.
Надеюсь что эта статья «Установка и настройка VNC Server на Debian/Ubuntu/Linux Mint» помогла вам и на этом я закончу ее.
Все настроил как тут описано, но в итоге после отключения завершается сеанс, это очень не удобно.
Как сделать что бы он не завершался
Я думаю что Вы не прописали (добавили) автозапуск vncserver-а.
# wget http://linux-notes.org/wp-content/uploads/files/vnc_server/vnc_server -O /etc/init.d/vncserver
# chmod +x /etc/init.d/vncserver
# update-rc.d vncserver defaults 99
# service vncserver restart
Проверяем работу 😉
А не подскажете, как лучше настроить сервер, для того что бы клиент мог работать на двух мониторах? Находил решение удвоить значение width в geometry (например, два монитора по 1024×800, то значение -geometry 2048×800, в фулскрин-моде ложится на два монитора). А вот если мониторы разные?
Удвоить длину наименьшего монитора.