Dans l'ensemble, je recommanderaisx11vnc
.
TL; DR
apt-get -y install x11vnc
x11vnc -storepasswd
Entrez votre mot de passe, il est enregistré par défaut sous ~/.vnc/passwd
forme cryptée INSECURE. Il peut être décrypté car la clé est connue. .. protégez-le avec les autorisations du système de fichiers)
chmod 600 ~/.vnc/passwd
Enregistrer mon script d'aide localement:
mkdir ~/bin/
curl https://gist.githubusercontent.com/trinitronx/76d2bf98489e5e3e84fa/raw/53885d87f91320b574ca4f7d609e4bb268274f68/start_x11vnc.sh > ~/bin/start_x11vnc.sh && chmod +x ~/bin/start_x11vnc.sh
Depuis votre hôte client VNC:
ssh -f -L 5900:127.0.0.1:5900 -p 22 youruser@your-ubuntu-host.example.com '~/bin/start_x11vnc.sh && sleep 10'
Ou, à partir de votre hôte VNC Server, exécutez:
~/bin/start_x11vnc.sh
via un terminal (ou commencer comme un démon avec -forever
comme service init.d , le service arriviste , unité systemd , ou comme vous le souhaitez)
Maintenant, exécutez votre client VNC de votre choix à partir de votre hôte client, pointez-le sur 127.0.0.1:5900
:, connectez-vous avec le mot de passe enregistré ci-dessus.
Utilisez le "Cookie magique" X11
La plupart des gestionnaires d'affichage X (comme GDM , XDM , KDM ) démarrent un serveur X11 initial et s'authentifient auprès de lui avec un cookie magique MIT . Selon votre gestionnaire d'affichage, le cookie magique se trouvera dans l'un des différents emplacements .
J'ai eu de la chance d'ouvrir une session VNC sur l'écran de connexion d'Ubuntu GDM * NOTE1 en trouvant le cookie magique avec ce script :
#!/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
Je peux démarrer ce script (je l'ai appelé start_x11vnc.sh
) à tout moment via SSH ... avant même de me connecter via l' gdm
écran de connexion. Il lance un x11vnc
serveur auquel je peux ensuite me connecter via le tunnel SSH . (Utilisez ssh -L 5900:127.0.0.1:5900
ou ajoutez LocalForward 5900 127.0.0.1:5900
à l'entrée de votre hôte dans ~/.ssh/config
).
REMARQUE 1 : dans certaines nouvelles versions de distribution telles que Ubuntu> = 17.10, l'affichage de session X de connexion GDM est complètement distinct de l'affichage de session X de l'utilisateur connecté. Par conséquent, il est nécessaire de se connecter d'abord à la session X GDM, de se connecter ... et enfin de se déconnecter et de se reconnecter à la session X nouvellement démarrée. Pourquoi ils le font maintenant de cette façon est un mystère, mais cela a brisé l'ancienne version de ce script.