вторник, 30 октября 2018 г.

x11vnc как альтернатива vino. Доступ в ЛВС к удалённому рабочему столу Linux с использованием системы VNC


В ходе решения своего частного вопроса по рекомендации был опробован альтернативный вариант доступа в ЛВС к удалённому рабочему столу Linux с использованием системы VNC, работающей по протоколу RFB.

Как известно, недостатком ПО vino является возможность получить доступ к удалённому рабочему столу Linux только при условии наличия уже активного графического сеанса пользователя.

Особенности установки vino в Linux Mint 19 читайте в этой заметке.

Пишут, что x11vnc свободен от такого недостатка vino. Но и здесь не обошлось без "ложки дёгтя". При использовании lightdm пароль для входа пользователя ввести не удастся. Поэтому для использования x11vnc Вам необходимо будет сменить lightdm на mdm, либо найти способ устранения данного явления.

Ниже приводятся команды, в результате выполнения которых x11vnc будет установлен и запущен, после чего можно осуществлять соединение с удалённым компьютером.

Выполните в терминале

sudo mkdir /etc/x11vnc && sudo apt install x11vnc && sudo x11vnc --storepasswd /etc/x11vnc/passwd

После выполнения указанных трёх команд система запросит ввести пароль для доступа по VNC. Данный пароль не связан с Вашей учётной записью пользователя в системе и имеет отношение исключительно к VNC. Вам необходимо его придумать.

Далее создайте файл x11vnc.service:

sudo gedit /lib/systemd/system/x11vnc.service (Ubuntu)

sudo xed /lib/systemd/system/x11vnc.service (Linux Mint)

Примечание. Создав псевдоним, соответствующий в моей системе текстовому редактору xed (подробности), всегда ввожу gedit.

Впишите в него:

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=simple
#ExecStart=/usr/bin/x11vnc -xkb -bg -noxrecord -auth /usr/lib/xorg/Xorg :0  -dontdisconnect -notruecolor -shared -noxfixes -noxdamage -display :0 -rfbauth /etc/x11vnc/passwd -forever -o /var/log/x11vnc.log
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc/passwd -rfbport 5900 -shared

[Install]
WantedBy=multi-user.target

и сохраните.

Выполните в терминале:

sudo systemctl enable x11vnc.service && sudo systemctl start x11vnc.service

Для подключения к удалённому рабочему столе используйте Remmina с отключённым шифрованием


или любое другое подходящее ПО, например RealVNC viewer (на англ. языке).

При написании заметки были использованы материал форума linuxmint.com.ru и публикация на сайте losst.

Дополнение от 2021 г.  В некоторых случаях при переключении на русскую раскладку перестаёт передаваться нажатие клавиши Shift, в результате чего невозможно набрать заглавные буквы в редакторе xed или Libre Office. Для устранения такого явления можно попробовать запускать x11vnc с дополнительным параметром -noxkb

Отредактируйте строку ExecStart в файле x11vnc.service:

ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat  -noxkb -rfbauth /etc/x11vnc/passwd -rfbport 5900 -shared

7 комментариев:

  1. Добрый день.
    Скажите пожалуйста, а как включить передачу файлов с клиента на сервер?

    ОтветитьУдалить
    Ответы
    1. Здесь данный вопрос не рассматривался. Но. вероятнее всего, на удалённый компьютер придётся дополнительно установить сервер openssh.
      Если используете Remmina, то в параметрах удалённого рабочего стола использовать настройки в секции SSH. Если RealVNC - в настройках клиента File-Preference-Expert найти ShareFiles и изменить False на True. Не факт, что сработает. Подробности - https://www.realvnc.com/en/connect/docs/viewer-parameter-ref.html#viewer-sharefiles
      Как альтернатива - ПО NoMachine. Там есть передача файлов. https://www.nomachine.com/ru

      Удалить
    2. scp жыж есть, усли сильно тяжко писать команду, мижна использовать remmina

      Удалить
  2. Огромное спасибо! По локалке все прекрасно работает.Но есть проблема.Допустим к офисной сети подключается пользователь из дома как VPN клиент используя Kerio Control. Из сети пользователь пингуется с любой машины. Сам пингует все ресурсы сети. При попытке подключения к нему из офиса через UltraVNC или Remmina , видим запрос пароля и... черный экран. Сам VPN клиент подключается к компам локалки через VNC Remmina без проблем Тот-же ноут принесенный в офис и подключенный к локалке прекрасно управляется через обе программы. Есть идеи что с этим делать?

    ОтветитьУдалить
  3. Доступ из офисной сети и доступ через VPN - это разные вещи. Наверное, имеет смысл смотреть какие порты открыты/закрыты при доступе через VPN.

    ОтветитьУдалить
  4. Огромное спасибо вам, за вашу статью.
    Для astra linux это очень актуально!
    Только чуть-чуть не так я создавал службу(демон) а именно через консольный текстовый редактор vim

    sudo vim /lib/systemd/system/x11vnc.service

    ОтветитьУдалить