Установка и настройка 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/sh
unset SESSION_MANAGER
unset 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/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#
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
#!/bin/bash
unset VNCSERVERARGS
VNCSERVERS=""
[ -f /etc/vncserver/vncservers.conf ] && . /etc/vncserver/vncservers.conf
prog=$"VNC server"
start() {
. /lib/lsb/init-functions
REQ_USER=$2
echo -n $"Starting $prog: "
ulimit -S -c 0 >/dev/null 2>&1
RETVAL=0
for display in ${VNCSERVERS}
do
export USER="${display##*:}"
if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
echo -n "${display} "
unset BASH_ENV ENV
DISP="${display%%:*}"
export VNCUSERARGS="${VNCSERVERARGS[${DISP}]}"
su ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}"
fi
done
}
stop() {
. /lib/lsb/init-functions
REQ_USER=$2
echo -n $"Shutting down VNCServer: "
for display in ${VNCSERVERS}
do
export USER="${display##*:}"
if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
echo -n "${display} "
unset BASH_ENV ENV
export USER="${display##*:}"
su ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1
fi
done
echo -e "\n"
echo "VNCServer Stopped"
}
case "$1" in
start)
start $@
;;
stop)
stop $@
;;
restart|reload)
stop $@
sleep 3
start $@
;;
condrestart)
if [ -f /var/lock/subsys/vncserver ]; then
stop $@
sleep 3
start $@
fi
;;
status)
status Xvnc
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac
#
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-release
yum update
yum clean all
yum
groupinstall "X Window system"
yum
groupinstall xfce
systemctl
set-default graphical.target
yum
install tigervnc-server
cp
/lib/systemd/system/vncserver@.service
/etc/systemd/system/vncserver@:1.service
adduser
vnc_fastmoney
gpasswd
-a vnc_fastmoney wheel
cp
/lib/systemd/system/vncserver@.service
/etc/systemd/system/vncserver@:1.service
nano
/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 environment
ExecStartPre=/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.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
su
- vnc_fastmoney
vncserver
systemctl
daemon-reload
systemctl
enable vncserver@:1.service
netstat
-tulpn | grep vnc
cat .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/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
xfce4-session
.i18n
export
LANGUAGE=ru_RU.utf8
export
LANG=ru_RU.utf8
export
LC_ALL=ru_RU.utf8
reboot
Автор: igel