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


17

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


Если другая машина находится в той же локальной сети, было бы целесообразно использовать 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. Почему они теперь делают это таким образом, остается загадкой, но это сломало старую версию этого сценария.


Не работает. VNC клиент подключается затем немедленно закрывается
тускнеет

@Dims Используйте команду:vncviewer <remote_ip>
Gokul NC

скрипт был сломан для новых версий Ubuntu ... Я обновил его хаком, чтобы он снова заработал. Похоже, что теперь сеанс дисплея gdm теперь отделен от сеанса, вошедшего в систему, поэтому, если вы используете этот скрипт в Ubuntu, он сначала приведет вас к экрану входа в GDM, а затем, когда вы войдете в систему, этот экран сеанса X станет пустым. Теперь вам нужно остановить первый процесс x11vnc и снова запустить скрипт, чтобы повторно присоединить его к отдельному сеансу и дисплею, вошедшему в систему.
TrinitronX


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-летнюю программу, чтобы сделать это в любой современной операционной системе?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.