Я столкнулся с той же проблемой. Проблема была в пользователе. Разрешение файла XAuthority принадлежало пользователю root. Я изменил разрешение на файл и смог войти в систему.
Вот как это сделать с VNC, если вы не хотите использовать RDP:
sudo apt-get install x11vnc
(или через Ubuntu Software Center -> Сервер X11VNC) sudo mkdir / etc / x11vnc sudo x11vnc -storepasswd / etc / x11vnc / passwd
Выберите y
, чтобы сохранить пароль. / etc / init
, названный x11vnc.conf
: sudo -H gedit / etc / init / x11vnc.conf
начать в 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
Вот и все! Теперь вы можете подключиться к любому клиенту VNC еще до входа в систему.
В целом, я бы рекомендовал x11vnc
.
apt-get -y install x11vnc
x11vnc -storepasswd
Введите свой пароль, он по умолчанию сохраняется в ~/.vnc/passwd
в зашифрованном виде INSECURE. .. защищать его с разрешениями файловой системы)
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 host:
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 unit или, как вы пожелаете)
Теперь запустите свой VNC-клиент
Большинство менеджеров отображения X
g5] (например, GDM , XDM , KDM ) запускают начальный сервер X11 и аутентифицируют его с помощью MIT Magic Cookie . В зависимости от вашего диспетчера дисплея волшебный cookie будет найден в одном из разных мест .Мне посчастливилось получить сеанс VNC на экране входа в Ubuntu GDM * ПРИМЕЧАНИЕ 1., обнаружив волшебный файл 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, сеанс сеанса входа в систему GDM полностью разделен от зарегистрированного пользователя X сеанса. Поэтому необходимо сначала подключиться к сеансу GDM X, войти в систему ... и, наконец, отключиться и снова подключиться к вновь запущенному сеансу X. Почему они теперь делают это так, это тайна, но она сломала старую версию этого скрипта.
Вот как это сделать с VNC, если вы не хотите использовать RDP:
sudo apt-get install x11vnc
(или через Ubuntu Software Center -> Сервер X11VNC) sudo mkdir / etc / x11vnc sudo x11vnc -storepasswd / etc / x11vnc / passwd
Выберите y
, чтобы сохранить пароль. / etc / init
, названный x11vnc.conf
: sudo -H gedit / etc / init / x11vnc.conf
начать в 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
Вот и все! Теперь вы можете подключиться к любому клиенту VNC еще до входа в систему.
В целом, я бы рекомендовал x11vnc
.
apt-get -y install x11vnc
x11vnc -storepasswd
Введите свой пароль, он по умолчанию сохраняется в ~/.vnc/passwd
в зашифрованном виде INSECURE. .. защищать его с разрешениями файловой системы)
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 host:
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 unit или, как вы пожелаете)
Теперь запустите свой VNC-клиент
Большинство менеджеров отображения X
g5] (например, GDM , XDM , KDM ) запускают начальный сервер X11 и аутентифицируют его с помощью MIT Magic Cookie . В зависимости от вашего диспетчера дисплея волшебный cookie будет найден в одном из разных мест .Мне посчастливилось получить сеанс VNC на экране входа в Ubuntu GDM * ПРИМЕЧАНИЕ 1., обнаружив волшебный файл 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, сеанс сеанса входа в систему GDM полностью разделен от зарегистрированного пользователя X сеанса. Поэтому необходимо сначала подключиться к сеансу GDM X, войти в систему ... и, наконец, отключиться и снова подключиться к вновь запущенному сеансу X. Почему они теперь делают это так, это тайна, но она сломала старую версию этого скрипта.
Вот как это сделать с VNC, если вы не хотите использовать RDP:
sudo apt-get install x11vnc
(или через Ubuntu Software Center -> Сервер X11VNC) sudo mkdir / etc / x11vnc sudo x11vnc -storepasswd / etc / x11vnc / passwd
Выберите y
, чтобы сохранить пароль. / etc / init
, названный x11vnc.conf
: sudo -H gedit / etc / init / x11vnc.conf
начать в 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
Вот и все! Теперь вы можете подключиться к любому клиенту VNC еще до входа в систему.