vnc + systemd

Jul 10, 2018 09:01


Инсталлируем unit файл в user-спейс, разрешаем для текущего пользователя и стартуем
vncserver@.service:

# cat vncserver@10.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver -autokill :%i
ExecStop=/usr/bin/vncserver -kill :%i
Restart=on-success
RestartSec=15

[Install]
WantedBy=multi-user.target
# install -D -Z -m644 -oroot -groot vncserver@.service /etc/systemd/user/vncserver@.service
# systemctl --user enable vncserver@10.service
# systemctl --user start vncserver@10.service

Предупреждение: слушаем на всех интерфейсах, не только локально, поэтому необходимо
ограничить iptables'ом траффик на порты 59XX (в моём случае порт 5910).

Предполагается, что vnc конфигурация уже лежит в ~/.vnc:

# ls -l ~/.vnc
-rw-r--r--. 1 ocehb ocehb 332 Jun 26 23:48 config
-rw-------. 1 ocehb ocehb 16 Jun 26 22:15 passwd
-rwx------. 1 ocehb ocehb 597 Jun 26 23:44 xstartup

  • password - генерится с помощью vncpasswd(1).
  • config - конфигурация для vncserver(1).
  • xstartup - стартовый файл для X-сервера:

    #! /bin/sh

    unset SESSION_MANAGER
    unset DBUS_SESSION_BUS_ADDRESS

    xsetroot -solid grey
    xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
    exec fvwm2

    if [ -f /etc/X11/xinit/xinitrc ]; then
    exec sh /etc/X11/xinit/xinitrc
    fi

    [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

    twm &

По историческим причинам предпочитаю FVWM.

Результат:

# systemctl --user status vncserver@10.service
● vncserver@10.service - Remote desktop service (VNC)
Loaded: loaded (/home/ocehb/.config/systemd/user/vncserver@10.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-07-09 13:10:16 EEST; 19h ago
CGroup: /user.slice/user-1000.slice/user@1000.service/vncserver.slice/vncserver@10.service
├─3565 /usr/bin/Xvnc :10 -auth /home/ocehb/.Xauthority -desktop arto:10 (ocehb) -fp catalogue:/
├─3574 sh -c (/home/ocehb/.vnc/xstartup; /usr/bin/vncserver -kill :10) >> '/home/ocehb/.vnc/art
├─3575 fvwm2
├─3578 xterm -geometry 80x24+10+10 -ls -title arto:10 (ocehb) Desktop
├─3581 /usr/libexec/fvwm/2.6.7/FvwmAuto 7 4 none 0 8 800
├─3582 /usr/libexec/fvwm/2.6.7/FvwmPager 9 4 none 0 8 0 1
├─3583 /usr/libexec/fvwm/2.6.7/FvwmButtons 11 4 none 0 8
├─3587 /usr/libexec/fvwm/2.6.7/FvwmIconMan 13 4 none 0 8
├─3588 -zsh
├─3648 -zsh
├─3650 /usr/lib64/firefox/firefox
├─3767 /usr/lib64/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 10638 -schedu
├─3909 /usr/lib64/firefox/firefox -contentproc -childID 3 -isForBrowser -prefsLen 13843 -schedu
├─3943 /usr/lib64/firefox/firefox -contentproc -childID 4 -isForBrowser -prefsLen 14418 -schedu
└─3986 /usr/lib64/firefox/firefox -contentproc -childID 5 -isForBrowser -prefsLen 14418 -schedu

Jul 09 13:10:13 arto systemd[1797]: Starting Remote desktop service (VNC)...
Jul 09 13:10:16 arto vncserver[3558]: New 'arto:10 (ocehb)' desktop is arto:10
Jul 09 13:10:16 arto vncserver[3558]: Starting applications specified in /home/ocehb/.vnc/xstartup
Jul 09 13:10:16 arto vncserver[3558]: Log file is /home/ocehb/.vnc/arto:10.log
Jul 09 13:10:16 arto systemd[1797]: Started Remote desktop service (VNC).

PS. Для доступа по ssh, на удалённом хосте запустить ssh -fN -L 5910:localhost:5910 arto,
после этого можно запускать локально vncviewer(1).



vnc, systemd

Previous post Next post
Up