Voici comment une session VNC peut être créée via un tunnel ssh avec un saut de passerelle entre le client et la machine cible :
Le fichier /etc/ssh/sshd_config (sur la machine cible) doit contenir ces lignes :
X11Forwarding yes
XAuthLocation /usr/bin/xauth
Votre chemin d'accès à xauth peut être différent, mais par défaut, sshd cherche dans le mauvais emplacement et cette valeur doit donc être définie.
.ssh/config (sur la machine cliente) :
Host example.com
Hostname foo.example.com
HostKeyAlias example.com
ProxyCommand ssh -t -C me@gateway.com /bin/nc %h 22
Ensuite, à partir du client, je peux exécuter
me@localhost$ ssh -X -C example.comCela démarre une session X sur mon client ainsi qu'une connexion ssh à example.com. Il ne reste plus qu'à lancer quelques commandes sur l'hôte distant pour lancer VNC :
me@example.com$ vncserver :n
me@example.com$ vncviewer -encodings "copyrect tight zlib corre rre raw" :n
Dans les commandes ci-dessus, :n est le numéro de l'écran sur lequel vous voulez démarrer vnc et l'écran sur lequel vncviewer doit chercher la session vnc. Puisque cela ressemble à une connexion locale à VNC, c'est une bonne idée de spécifier de meilleurs encodages car vncviewer utilisera par défaut l'encodage brut, ce qui donnera des performances médiocres sur le réseau.
C'est tout !