Як отримати доступ до машини ubuntu через VNC з екрана входу?


17

Я хочу отримати доступ до машини Ubuntu віддалено через VNC. Але я можу отримати доступ до машини Ubuntu лише в тому випадку, якщо користувач увійшов у систему. Я хочу отримати доступ до машини ubuntu через VNC з самого екрана входу. Ми можемо отримати доступ до всіх віконних машин із екрана входу. Однак нам не вдалося отримати доступ до машини Ubuntu з екрана входу. Є спосіб, але я не знаю деталей. Чи може хтось дати вирішення цієї проблеми?


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

Відповіді:


10

Ваша найкраща ставка - встановити xrdp Встановіть xrdp . Після встановлення ви можете використовувати клієнт RDP для підключення до машини - вам буде запропоновано отримати свої облікові дані, як це було б на екрані входу.


Я встановив xrdp, але все ще не можу отримати доступ до машини ubuntu з екрана входу.
karthick87

@karthick: Ви підключаєтесь до машини за допомогою VNC або використовуєте клієнт RDP?
Натан Осман

Я не знаходжу клієнта RDP у своїй машині. Де вона буде розміщена?
karthick87

@karthick: Ви використовуєте Ubuntu в якості свого клієнта? Якщо так, програма, яка використовується, називається "Клієнт сервера терміналів". У Windows він називається IIRC "Віддалений робочий стіл".
Натан Осман

Так, дякую Чи можливо створити запуск для клієнта термінального сервера?
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:

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

Або з вашого хоста VNC Server запустіть:

~/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

@Dims Використовуйте команду:vncviewer <remote_ip>
Gokul NC

скрипт був зламаний для нових версій Ubuntu ... Я оновив його злом, щоб він міг знову працювати. Здається, зараз сеанс відображення gdm тепер окремо від сеансу, який увійшов у систему, тому якщо ви використовуєте цей скрипт на Ubuntu, він спочатку переведе вас на екран входу в GDM, а потім, коли ви ввійдете в цей X сеанс, дисплей буде порожнім. Тепер вам потрібно зупинити перший процес x11vnc і знову запустити скрипт, щоб знову приєднатись до окремо взятого X-сеансу та відображення.
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/initвиклику 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's може підключитися до сесії менеджера робочого столу на: 0, чому, в пеклі, така проблема для Ubuntu?!?! Чому для цього потрібно покладатися на сироту, 7-річну програму на будь-якій сучасній операційній системі?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.