Установка и настройка VNC Server на Debian/Ubuntu/Linux Mint and Centos7
Чтобы установить VNC, достаточно выполнить команду:
#
apt-get install vnc4server#
adduser vncuser#
passwd vncuser #
su - vncuser$ vncserverНа рисунке ниже видно как стартанул наш vnc сервер, но нам его нужно немного подредактировать:
Чтобы сделать настройку в сценарие запуска, мы должны убить сессию, что мы только что создали:
#
vncserver -kill :1 #
cd ~#
vim .vnc/xstartup#!/bin/sh
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc
gnome-session --session=gnome-classic &
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#x-terminal-emulator -geometry 1280x1024+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
После чего запускаем нашу сессию с разрешением экрана 1024×600:
#
vncserver -geometry 1024x600#
apt-get install gnome-core#!/bin/shunset SESSION_MANAGERunset DBUS_SESSION_BUS_ADDRESS#startxfce4 &gnome-session &#startkde &#mate-session &#startlxde &#cinnamon &#openbox &[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresourcesxsetroot -solid greyvncconfig -iconic &
#
sudo mkdir -p /etc/vncserver#
sudo touch /etc/vncserver/vncservers.conf#
sudo vim /etc/vncserver/vncservers.confVNCSERVERS="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#!/bin/bashunset VNCSERVERARGSVNCSERVERS=""[ -f /etc/vncserver/vncservers.conf ] && . /etc/vncserver/vncservers.confprog=$"VNC server"start() {. /lib/lsb/init-functionsREQ_USER=$2echo -n $"Starting $prog: "ulimit -S -c 0 >/dev/null 2>&1RETVAL=0for display in ${VNCSERVERS}doexport USER="${display##*:}"if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; thenecho -n "${display} "unset BASH_ENV ENVDISP="${display%%:*}"export VNCUSERARGS="${VNCSERVERARGS[${DISP}]}"su ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}"fidone}stop() {. /lib/lsb/init-functionsREQ_USER=$2echo -n $"Shutting down VNCServer: "for display in ${VNCSERVERS}doexport USER="${display##*:}"if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; thenecho -n "${display} "unset BASH_ENV ENVexport USER="${display##*:}"su ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1fidoneecho -e "\n"echo "VNCServer Stopped"}case "$1" instart)start $@;;stop)stop $@;;restart|reload)stop $@sleep 3start $@;;condrestart)if [ -f /var/lock/subsys/vncserver ]; thenstop $@sleep 3start $@fi;;status)status Xvnc;;*)echo $"Usage: $0 {start|stop|restart|condrestart|status}"exit 1esac
#
sudo update-rc.d vncserver defaults 99#
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Через команду можно посмотреть что все работает:
#
netstat -a
После того как будут установлены все эти пакеты, нужно будет открыть файл /etc/default/locale и в нем отредактировать две первые строки заменив их на эти:
LANG="ru_RU.UTF-8"
LANGUAGE="ru:en"
Если ошибка аутентификации — назначаем пароль командой vncpasswd
Для debian8
Устанавливаем Xfce и VNC server (любители GNOME, KDE, LXDE, etc. устанавливают оболочку по своему вкусу).
# apt-get install xfce4 xfce4-goodies tightvncserver
Создаем пользователя от которого будем запускать vnc сервер.
# adduser vnc
Устанавливаем sudo (в Debian данный пакет не установлен по умолчанию).
# apt-get install sudo
Добавляем пользователя vnc в группу sudo.
# gpasswd -a vnc sudo
Переходим под пользователя vnc.
# su - vnc
Запускаем vnc сервер.
$ vncserver
Если это первый запуск vnc сервера, будет создан конфиг файл и запрошены некоторые параметры:
$ vncserver
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
xauth: file /home/vnc/.Xauthority does not exist
New 'X' desktop is my.server:1
Creating default startup script /home/vnc/.vnc/xstartup
Starting applications specified in /home/vnc/.vnc/xstartup
Log file is /home/vnc/.vnc/my.server:1.log
по умолчанию порт vnc сервера будет 5901, порт каждого следующего дисплея будет увеличиваться на 1 (5902,5903,…).
Проверить запущен ли VNC сервер и на каком порту слушает можно следующей командой.
$ netstat -nltp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 1054/Xtightvnc
Убить конкретный дисплей можно так:
$ vncserver -kill :1
Killing Xtightvnc process ID 3246
:1 — какой дисплей нужно убить.
Создание скрипта автостарта vnc сервера.
Сначала убьем запущенный дисплей :1 (если он запущен).
$ vncserver -kill :1
создаем скрипт запуска
$ sudo nano /usr/local/bin/myvnc
Добавляем следующие строки в файл:
#!/bin/bash
PATH="$PATH:/usr/bin/"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
case "$1" in
start)
/usr/bin/vncserver ${OPTIONS}
;;
stop)
/usr/bin/vncserver -kill :${DISPLAY}
;;
restart)
$0 stop
$0 start
;;
esac
exit 0
если требуется — в скрипте можно изменить глубину цвета или разрешение экрана.
Делаем файл исполняемым.
$ sudo chmod +x /usr/local/bin/myvnc
использование созданного нами скрипта:
$ myvnc start ###запустить vnc сервер
$ myvnc stop ###остановить vnc сервер
$ myvnc restart ###перезапустить vnc сервер
Теперь
нужно позаботиться о том, чтобы настроенный нами vnc стартовал после
загрузки сервера (запланированной и не очень).
Для этого создаем файл по следующему пути.
$ sudo nano /lib/systemd/system/myvnc.service
Добавляем следующий текст в файл:
[Unit]
Description=MyVnc
[Service]
Type=forking
ExecStart=/usr/local/bin/myvnc start
ExecStop=/usr/local/bin/myvnc stop
ExecReload=/usr/local/bin/myvnc restart
User=vnc
[Install]
WantedBy=multi-user.target
Включаем юнит в автозагрузку при старте системы.
$ sudo systemctl enable myvnc.service
Created symlink from /etc/systemd/system/multi-user.target.wants/myvnc.service to /lib/systemd/system/myvnc.service.
Смотрим статус созданного нами юнита.
$ sudo systemctl -l status myvnc.service
? myvnc.service - MyVnc
Loaded: loaded (/lib/systemd/system/myvnc.service; enabled)
Active: inactive (dead)
Дергаем systemd для поиска новых или измененных юнитов.
$ sudo systemctl daemon-reload
Centos7
yum install epel-releaseyum updateyum clean all
yum
groupinstall "X Window system"yum
groupinstall xfcesystemctl
set-default graphical.targetyum
install tigervnc-servercp
/lib/systemd/system/vncserver@.service
/etc/systemd/system/vncserver@:1.serviceadduser
vnc_fastmoneygpasswd
-a vnc_fastmoney wheelcp
/lib/systemd/system/vncserver@.service
/etc/systemd/system/vncserver@:1.servicenano
/etc/systemd/system/vncserver@:1.service[Unit]Description=Remote desktop service (VNC)After=syslog.target network.target[Service]Type=forking# Clean any existing files in /tmp/.X11-unix environmentExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'ExecStart=/usr/sbin/runuser -l vnc_fastmoney -c "/usr/bin/vncserver %i -geometry 800x600 -depth 16"PIDFile=/home/vnc_fastmoney/.vnc/%H%i.pidExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'[Install]WantedBy=multi-user.target
su
- vnc_fastmoneyvncserversystemctl
daemon-reloadsystemctl
enable vncserver@:1.servicenetstat
-tulpn | grep vnccat .vnc/xstartup#!/bin/sh# Uncomment the following two lines for normal desktop:# unset SESSION_MANAGER# exec /etc/X11/xinit/xinitrc[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresourcesxsetroot -solid greyvncconfig -iconic &#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &#x-window-manager &xfce4-session
.i18nexport
LANGUAGE=ru_RU.utf8export
LANG=ru_RU.utf8export
LC_ALL=ru_RU.utf8reboot
Автор: igel
