Как получить доступ к машине с Ubuntu через VNC с экрана входа в систему?

17

Я хочу получить доступ к машине с Ubuntu удаленно через VNC. Но я могу получить доступ к машине с Ubuntu, только если пользователь вошел в систему. Я хочу получить доступ к машине с Ubuntu через VNC с самого экрана входа в систему. Мы можем получить доступ ко всем машинам Windows с экрана входа в систему. Однако мы не смогли получить доступ к машине с Ubuntu с экрана входа в систему. Есть какой-то способ, но я не знаю деталей. Может кто-нибудь дать решение этой проблемы?

karthick87
источник
Если другая машина находится в той же локальной сети, было бы целесообразно использовать XDMCP вместо VNC. Если он не находится в той же локальной сети, ускоренный X по сети может быть слишком медленным.
Робин Грин,

Ответы:

10

Лучше всего установить xrdp Установить xrdp . После установки вы можете использовать RDP-клиент для подключения к машине - вам будет предложено ввести ваши учетные данные, как на экране входа в систему.

Натан Осман
источник
Я установил xrdp, но все еще не могу получить доступ к машине с Ubuntu с экрана входа в систему.
karthick87
@karthick: Вы подключаетесь к машине с VNC или используете RDP-клиент?
Натан Осман
Я не нахожу клиента RDP в моей машине. Где это будет находиться?
karthick87
@karthick: Используете ли вы Ubuntu в качестве клиента? В этом случае используемая программа называется «Клиент сервера терминалов». В Windows это называется «Удаленный рабочий стол» IIRC.
Натан Осман
Да, спасибо. Можно ли создать панель запуска для Terminal Server Client?
karthick87
5

В целом, я бы порекомендовалx11vnc .

TL; DR

apt-get -y install x11vnc
x11vnc -storepasswd

Введите свой пароль, он будет сохранен по умолчанию в ~/.vnc/passwd зашифрованном виде. Его можно расшифровать, потому что ключ известен. .. защитить его с разрешениями файловой системы)

chmod 600 ~/.vnc/passwd

Сохраните мой вспомогательный скрипт локально:

mkdir ~/bin/
curl https://gist.githubusercontent.com/trinitronx/76d2bf98489e5e3e84fa/raw/53885d87f91320b574ca4f7d609e4bb268274f68/start_x11vnc.sh  > ~/bin/start_x11vnc.sh && chmod +x ~/bin/start_x11vnc.sh

С вашего хоста VNC Client:

ssh -f  -L 5900:127.0.0.1:5900 -p 22 youruser@your-ubuntu-host.example.com '~/bin/start_x11vnc.sh && sleep 10'

Или со своего хоста VNC-сервера запустите:

~/bin/start_x11vnc.sh

через терминал (или запустить его как демон с -foreverкак сервис init.d , выскочка службы , Systemd единицу , или однако вы хотите)

Теперь запустите клиент VNC по своему выбору на своем клиентском хосте, укажите его:, 127.0.0.1:5900войдите с паролем, сохраненным выше.

Используйте X11 "Волшебное печенье"

Большинство менеджеров дисплеев X (таких как GDM , XDM , KDM ) запускают начальный сервер X11 и проходят аутентификацию на нем с помощью MIT Magic Cookie . В зависимости от вашего диспетчера отображения, волшебное печенье будет найдено в одном из различных мест .

Мне посчастливилось открыть сеанс VNC на экране входа в систему Ubuntu GDM * NOTE1 , найдя волшебный файл cookie с помощью этого сценария :

#!/bin/bash
DEFAULT_DISPLAY=:0
X11VNC_DISPLAY="$DEFAULT_DISPLAY"

if [ -x /usr/bin/x11vnc ]; then
     [ "$1" == '-nocache' ] && CACHE_FLAG='-noncache' || CACHE_FLAG='-noncache'
     [ "$2" == '-guess' ] && GUESS_FLAG='-auth guess' || GUESS_FLAG=''
         [ -f /root/.vnc/passwd ] && PASSWORD="/root/.vnc/passwd"
         [ -f $HOME/.vnc/passwd ] && PASSWORD="$HOME/.vnc/passwd"
         [ ! -z "$PASSWORD" ] && x11vnc -display $X11VNC_DISPLAY -xkb -rfbauth $PASSWORD -rfbport 5900 -shared -forever -nowf -norc -notruecolor -bg $GUESS_FLAG $CACHE_FLAG -noxdamage
    EXIT_CODE=$?
     if [ $EXIT_CODE -ne 0 ]; then

        echo "\n*********************************************************************"
        echo "*** Could not start x11vnc!  Trying again with gdm MAGIC_COOKIE! ***"
        echo "*********************************************************************\n"

        # Old GDM location for Ubuntu <= 17.10
        MAGIC_COOKIE_FILE=`sudo find /var/run/gdm/ -iname database | grep for-gdm`

        # New GDM location for Ubuntu >= 17.10
        [ -z "$MAGIC_COOKIE_FILE" ] && NUM_MAGIC_COOKIE_FILE_SESSIONS=`sudo find /run/user/ -iwholename '*/gdm/*' -iname '*Xauthority' 2>/dev/null | wc -l`
        if [ -z "$MAGIC_COOKIE_FILE" -a "$NUM_MAGIC_COOKIE_FILE_SESSIONS" -gt 1 ]; then
            # Find the current user's session
            MAGIC_COOKIE_FILE=`sudo find /run/user/$(id -u) -iwholename '*/gdm/*' -iname '*Xauthority'`
            X11VNC_DISPLAY=":1"
        else
            # Find the GDM user's session (or whichever shows up first in ps list)
            # This should pick up the original gdm session which grabs :0
            # If you login after gdm login screen, your Xorg server may end up on another display!
            # Workaround for now is to restart x11vnc on that display number
            [ -z "$MAGIC_COOKIE_FILE" ] && MAGIC_COOKIE_FILE=`sudo find /run/user/ -iwholename '*/gdm/*' -iname '*Xauthority' | head -n1`
        fi
        # Old lightdm location for Ubuntu <= 17.10
        [ -z "$MAGIC_COOKIE_FILE" ] && MAGIC_COOKIE_FILE=`sudo find /var/lib -name '.Xauthority' -o -wholename '/var/run/lightdm/root/:0' | head -n1`
        #sudo bash -c "[ -z \"$MAGIC_COOKIE_FILE\" -a -e /var/run/lightdm/root/:0 ]" && MAGIC_COOKIE_FILE='/var/run/lightdm/root/:0'
        [ -n "$MAGIC_COOKIE_FILE" -a -z "$GUESS_FLAG" ] && AUTH_COOKIE_FLAG="-auth $MAGIC_COOKIE_FILE"
        [ ! -z "$PASSWORD" ] && sudo x11vnc -display $X11VNC_DISPLAY -xkb -rfbauth $PASSWORD -rfbport 5900 -shared -forever -nowf -norc -notruecolor -bg $GUESS_FLAG $CACHE_FLAG -noxdamage ${AUTH_COOKIE_FLAG}
    fi
fi

Я могу запустить этот скрипт (я его назвал start_x11vnc.sh) в любое время через SSH ... даже до входа в систему через gdmэкран входа в систему. Он запускает x11vncсервер, к которому я могу подключиться через SSH-туннель . (Используйте ssh -L 5900:127.0.0.1:5900или добавьте LocalForward 5900 127.0.0.1:5900к записи вашего хоста в ~/.ssh/config).

ПРИМЕЧАНИЕ 1. В некоторых новых выпусках дистрибутива, таких как Ubuntu> = 17.10, отображение сеанса X входа в систему GDM полностью отделено от отображения сеанса X пользователя, вошедшего в систему. Поэтому сначала необходимо подключиться к сеансу GDM X, войти в систему ... и, наконец, отключиться и повторно подключиться к только что начавшемуся сеансу X. Почему они теперь делают это таким образом, остается загадкой, но это сломало старую версию этого сценария.

TrinitronX
источник
Не работает. VNC клиент подключается затем немедленно закрывается
тускнеет
@Dims Используйте команду:vncviewer <remote_ip>
Gokul NC
скрипт был сломан для новых версий Ubuntu ... Я обновил его хаком, чтобы он снова заработал. Похоже, что теперь сеанс дисплея gdm теперь отделен от сеанса, вошедшего в систему, поэтому, если вы используете этот скрипт в Ubuntu, он сначала приведет вас к экрану входа в GDM, а затем, когда вы войдете в систему, этот экран сеанса X станет пустым. Теперь вам нужно остановить первый процесс x11vnc и снова запустить скрипт, чтобы повторно присоединить его к отдельному сеансу и дисплею, вошедшему в систему.
TrinitronX
2

Чтобы включить вход в GDM через удаленное соединение VNC ssh, попробуйте X11vnc. Смотрите также этот ответ .

Takkat
источник
0

Вот как это сделать с VNC, если вы не хотите использовать RDP:

  1. Установите сервер X11VNC: sudo apt-get install x11vnc(Или через Центр программного обеспечения Ubuntu -> Сервер X11VNC)
  2. Установите пароль:

    sudo mkdir /etc/x11vnc
    sudo x11vnc -storepasswd /etc/x11vnc/passwd
    

    Выберите, yчтобы сохранить пароль.

  3. Создайте пустой файл в /etc/initAndroid x11vnc.conf:

    sudo -H gedit /etc/init/x11vnc.conf
    
  4. Вставьте это в файл:

    start on login-session-start
    
    exec x11vnc -xkb -forever -auth /var/run/lightdm/root/:0 -display :0 -rfbauth /etc/x11vnc/passwd -rfbport 5900 -bg -o /var/log/x11vnc.log
    
  5. Сохранить и закрыть

  6. Перезапустите Ubuntu

Это оно! Теперь вы сможете подключиться к любому клиенту VNC еще до входа в систему.

Дидье А.
источник
Это не сработало.
Булава
@mace Интересно, это сработало для меня, возможно, это зависит от версии Ubuntu. К сожалению, я не помню, какая версия была у меня в Ubuntu, когда я делал эту процедуру.
Дидье А.
0

Re: попробуйте с X11vnc

x11vnc не обновлялся с сентября 2011 года !!!! Есть известные ошибки, и я получаю сообщение об ошибке, которая вызывает прекращение работы стека по x11vnc в любое время, когда всплывающее диалоговое окно (например, щелчок по меню «файл» в любом окне) отключает сеанс.

Raspberry pi может подключиться к сеансу менеджера рабочего стола по адресу: 0, почему, черт возьми, это такая проблема для Ubuntu?!?! Почему необходимо полагаться на осиротевшую 7-летнюю программу, чтобы сделать это в любой современной операционной системе?

Скотт
источник