Я столкнулся с той же проблемой. Проблема была в пользователе. Разрешение файла XAuthority принадлежало пользователю root. Я изменил разрешение на файл и смог войти в систему.
Лучше всего установить xrdp. После установки вы можете использовать RDP-клиент для подключения к машине - после этого вам будут предложены ваши учетные данные, как вы были бы на экране входа в систему.
Чтобы включить вход GDM через удаленное соединение VNC ssh, попробуйте использовать X11vnc. См. Также этот ответ.
Чтобы включить вход GDM через удаленное соединение VNC ssh, попробуйте использовать X11vnc. См. Также этот ответ.
Чтобы включить вход GDM через удаленное соединение VNC ssh, попробуйте использовать X11vnc. См. Также этот ответ.
Чтобы включить вход GDM через удаленное соединение VNC ssh, попробуйте использовать X11vnc. См. Также этот ответ.
Чтобы включить вход GDM через удаленное соединение VNC ssh, попробуйте использовать X11vnc. См. Также этот ответ.
Чтобы включить вход GDM через удаленное соединение VNC ssh, попробуйте использовать X11vnc. См. Также этот ответ .
Чтобы включить вход GDM через удаленное соединение VNC ssh, попробуйте использовать X11vnc. См. Также этот ответ .
Чтобы включить вход GDM через удаленное соединение VNC ssh, попробуйте использовать X11vnc. См. Также этот ответ .
Чтобы включить вход GDM через удаленное соединение VNC ssh, попробуйте использовать X11vnc. См. Также этот ответ .
Чтобы включить вход GDM через удаленное соединение VNC ssh, попробуйте использовать X11vnc. См. Также этот ответ .
Лучше всего установить xrdp . После установки вы можете использовать RDP-клиент для подключения к машине - после этого вам будут предложены ваши учетные данные, как вы были бы на экране входа в систему.
В общем, я бы рекомендовал x11vnc.
apt-get -y install x11vnc
x11vnc -storepasswd
Введите свой пароль, он по умолчанию сохранен в ~/.vnc/passwd I ' d!] x11vnc .. защищать его с разрешениями файловой системы)
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-клиента: [ ! d6]
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, upstart service, systemd или, если хотите)
Теперь запустите своего клиента VNC по своему выбору с вашего клиентского хоста, укажите его на: 127.0.0.1:5900, логин с паролем, сохраненным выше.
[d13 ] Использовать X11 «Magic Cookie»Большинство init.d service (например, служба GDM, upstart , KDM) запустили начальный сервер X11 и systemd unit с MIT Magic Cookie.
Мне повезло, что сеанс VNC открыт на экране входа в Ubuntu GDM * ПРИМЕЧАНИЕ 1, найдя волшебный файл cookie с GDM :
#!/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. Почему они теперь делают это так, это тайна, но она сломала старую версию этого скрипта.
Чтобы включить вход GDM через удаленное соединение VNC ssh, попробуйте использовать X11vnc. См. Также этот ответ.
Вот как это сделать с VNC, если вы не хотите использовать RDP:
Установите сервер X11VNC: 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
Вставьте это в файл: 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
Сохранить и закрыть Перезапустить Ubuntu Вот и все! Теперь вы можете подключиться к любому клиенту VNC еще до входа в систему.
Вот как это сделать с VNC, если вы не хотите использовать RDP:
Установите сервер X11VNC: 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
Вставьте это в файл: 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
Сохранить и закрыть Перезапустить Ubuntu Вот и все! Теперь вы можете подключиться к любому клиенту VNC еще до входа в систему.
В общем, я бы рекомендовал x11vnc.
apt-get -y install x11vnc
x11vnc -storepasswd
Введите свой пароль, он по умолчанию сохранен в ~/.vnc/passwd I ' d!] x11vnc .. защищать его с разрешениями файловой системы)
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-клиента: [ ! d6] 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, upstart service, systemd или, если хотите)
Теперь запустите своего клиента VNC по своему выбору с вашего клиентского хоста, укажите его на: 127.0.0.1:5900, логин с паролем, сохраненным выше.
Большинство init.d service (например, служба GDM, upstart , KDM) запустили начальный сервер X11 и systemd unit с MIT Magic Cookie.
Мне повезло, что сеанс VNC открыт на экране входа в Ubuntu GDM * ПРИМЕЧАНИЕ 1, найдя волшебный файл cookie с GDM :
#!/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:
Установите сервер X11VNC: 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
Вставьте это в файл: 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
Сохранить и закрыть Перезапустить Ubuntu Вот и все! Теперь вы можете подключиться к любому клиенту VNC еще до входа в систему.
В общем, я бы рекомендовал x11vnc.
apt-get -y install x11vnc
x11vnc -storepasswd
Введите свой пароль, он по умолчанию сохранен в ~/.vnc/passwd I ' d!] x11vnc .. защищать его с разрешениями файловой системы)
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-клиента: [ ! d6] 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, upstart service, systemd или, если хотите)
Теперь запустите своего клиента VNC по своему выбору с вашего клиентского хоста, укажите его на: 127.0.0.1:5900, логин с паролем, сохраненным выше.
Большинство init.d service (например, служба GDM, upstart , KDM) запустили начальный сервер X11 и systemd unit с MIT Magic Cookie.
Мне повезло, что сеанс VNC открыт на экране входа в Ubuntu GDM * ПРИМЕЧАНИЕ 1, найдя волшебный файл cookie с GDM :
#!/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:
Установите сервер X11VNC: 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
Вставьте это в файл: 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
Сохранить и закрыть Перезапустить Ubuntu Вот и все! Теперь вы можете подключиться к любому клиенту VNC еще до входа в систему.
В общем, я бы рекомендовал x11vnc.
apt-get -y install x11vnc
x11vnc -storepasswd
Введите свой пароль, он по умолчанию сохранен в ~/.vnc/passwd I ' d!] x11vnc .. защищать его с разрешениями файловой системы)
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-клиента: [ ! d6] 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, upstart service, systemd или, если хотите)
Теперь запустите своего клиента VNC по своему выбору с вашего клиентского хоста, укажите его на: 127.0.0.1:5900, логин с паролем, сохраненным выше.
Большинство init.d service (например, служба GDM, upstart , KDM) запустили начальный сервер X11 и systemd unit с MIT Magic Cookie.
Мне повезло, что сеанс VNC открыт на экране входа в Ubuntu GDM * ПРИМЕЧАНИЕ 1, найдя волшебный файл cookie с GDM :
#!/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:
Установите сервер X11VNC: 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
Вставьте это в файл: 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
Сохранить и закрыть Перезапустить Ubuntu Вот и все! Теперь вы можете подключиться к любому клиенту VNC еще до входа в систему.
В общем, я бы рекомендовал x11vnc.
apt-get -y install x11vnc
x11vnc -storepasswd
Введите свой пароль, он по умолчанию сохранен в ~/.vnc/passwd I ' d!] x11vnc .. защищать его с разрешениями файловой системы)
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-клиента: [ ! d6] 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, upstart service, systemd или, если хотите)
Теперь запустите своего клиента VNC по своему выбору с вашего клиентского хоста, укажите его на: 127.0.0.1:5900, логин с паролем, сохраненным выше.
Большинство init.d service (например, служба GDM, upstart , KDM) запустили начальный сервер X11 и systemd unit с MIT Magic Cookie.
Мне повезло, что сеанс VNC открыт на экране входа в Ubuntu GDM * ПРИМЕЧАНИЕ 1, найдя волшебный файл cookie с GDM :
#!/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:
Установите сервер X11VNC: 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
Вставьте это в файл: 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
Сохранить и закрыть Перезапустить Ubuntu Вот и все! Теперь вы можете подключиться к любому клиенту VNC еще до входа в систему.
В общем, я бы рекомендовал x11vnc.
apt-get -y install x11vnc
x11vnc -storepasswd
Введите свой пароль, он по умолчанию сохранен в ~/.vnc/passwd I ' d!] x11vnc .. защищать его с разрешениями файловой системы)
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-клиента: [ ! d6] 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, upstart service, systemd или, если хотите)
Теперь запустите своего клиента VNC по своему выбору с вашего клиентского хоста, укажите его на: 127.0.0.1:5900, логин с паролем, сохраненным выше.
Большинство init.d service (например, служба GDM, upstart , KDM) запустили начальный сервер X11 и systemd unit с MIT Magic Cookie.
Мне повезло, что сеанс VNC открыт на экране входа в Ubuntu GDM * ПРИМЕЧАНИЕ 1, найдя волшебный файл cookie с GDM :
#!/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. Почему они теперь делают это так, это тайна, но она сломала старую версию этого скрипта.
В целом, я бы рекомендовал 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 еще до входа в систему.
В целом, я бы рекомендовал 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. Почему они теперь делают это так, это тайна, но она сломала старую версию этого скрипта.