
Ссылка на статью в формате MarkDown для Curl, кодировка RU.UTF-8
VNC на XFCE4
Адрес страницы: https://nixscript.ru/xfce4-vnc
Знаю, много написано, но тем не менее. Всё кусками, разрозненно, каждый раз искать по всей сети... Хочу всё в одном месте.
Примечание: всё написано под Archlinux и Manjaro.
Установка
Устанавливаем следующие пакеты:
- tigervnc
- xscreensaver или что-то подобное
sudo pacman -Sy tigervnc xscreensaver
Не буду описывать, как настроить SSH думаю вы и так легко с этим справляетесь.
Настройка
Для настройки VNC просто запустите:
vncserver
Введите ему пароль пользователя VNC. Не юзера, который вошёл в систему, а именно тот пароль, который будете вводить при подключении к машине удалённо.
Создастся директория ~/.vnc в которой будут и файлы конфигурации VNC, и файл пароля.
В файле ~/.vnc/config надо раскомментировать строки:
securitytypes=vncauth,tlsvnc
desktop=sandbox
geometry=1200x700
dpi=96
localhost
alwaysshared
В файле xstartup закомментируйте всё, оставив рабочим только это:
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xfce4-terminal --drop-down --display=:1 --command xfce4-session --minimize
Осталось настроить блокировку экрана.
Зайдите в настройки XFCE4 и отключите блокировку экрана полностью. Как по времени, так и при переходе в спящий, ждущий и другие режимы.
Выполните xscreensaver-demo
укажите необходимые настройки хранителя и энергосбережения.
Теперь система не будет блокировать сессию VNC при блокировке экрана.
VNC настроен. Теперь можно подключаться с другой машины или даже со смартфона Android
Подключаемся
На машине, с которой собираетесь подключаться, делаем проброс порта через SSH:
ssh -p 22 userlogin@remotemachine -L 8900:localhost:5901
Как только видим приглашение bash удалённой машины, запускаем на ней vncserver
[userlogin@remotemachine ~]$ vncserver
New 'remotemachine:1 (userlogin)' desktop is remotemachine:1
Starting applications specified in /home/userlogin/.vnc/xstartup
Log file is /home/userlogin/.vnc/remotemachine:1.log
[userlogin@remotemachine ~]$
VNC сообщает вам, что запустил первую сессию (remotemachine:1). Соответственно на удалённой машине, под это дело выделился порт 5901. Именно его мы и указали пробрасывая порт. И соответственно на той машине, с которой вы сейчас управляете процессом, нужно использовать порт 8900, который мы указали локальным, принимающим, при пробросе порта.
Соответственно в клиенте VNC следует указать следующее:
localhost:8900
И на запрос пароля, ввести тот, что мы указывали при первом запуске VNC.
После подключения, вы увидите свежезапущенную, параллельную X-сессию. Да, именно параллельную. Текущая X-сессия затронута не будет.
Отключиться очень просто. Закрываем соединение клиента VNC, убиваем процесс сервера VNC и выходим из удалённой машины:
pkill Xvnc
exit
Подключаемся в активную X-сессию.
Пробрасываем порт, но чуть иначе:
ssh -p 22 userlogin@remotemachine -L 8900:localhost:5900
Как видите, мы указываем не 5901, как в прошлый раз, а 5900, так как именно этот порт используется VNC для подключения к активной сессии.
После появления приглашения bash с удалённой машины, надо выполнить следующее:
x0vncserver -rfbauth ~/.vns/passwd -display=:0
И подключившись на localhost:8900 и введя пароль VNC вы увидите активную сессию на удалённой машине.
Если увидите окно ввода пароля, вводите пароль юзера активной сессии, а не VNC.
Отключение от активной сессии
Отключаться довольно просто. Закрываете соединение VNC-клиента и выполняете следующее:
- В терминале нажимаете CTRL+C
- Вводите команду:
exit
Всё. Вы отключились.
Автор: Grigruss 16.04.2019
Статья написана в формате MarkDown и сконвертирована в HTML с помощью скрипта Parsedown.