SSH Forward

Keywords: #ops

Depuis quelques temps, j’utilise plusieurs ordinateurs différents au quotidien. (Je compte également mon smartphone).

J’ai aussi depuis fort longtemps un serveur pour quelques applications qui nécessite une IP publique ou un réseau rapide.

Bref, j’utilise depuis mai un serveur comme station de travail principale, avec un setup

  • ssh-tmux qui suffit a la plupart de mes besoins
  • webapps comme Jupyter ou Kafka-ui

Depuis peu je me retrouve a utiliser un RaspberryPI comme desktop. Je commence a avoir envie de faire tourner plus d’application sur mon serveur, et economiser du CPU et de la RAM locale.

Donc, est-ce qu’on peut forward X-server via ssh et utiliser le desktop uniquement comme un client X ? Est-ce que c’est rentable ?

Testons.

Configuration

Dans la suite, on va noter Serveur la machine distante et Client la machine avec laquelle on ssh.

Verification de la presence de xauth sur le Serveur

$ which xauth
$

S’il n’est pas installé, il faut le faire:

$ apt-get install xauth
$ which xauth
/usr/bin/xauth

Authorisation du forward X11 via ssh

Dans /etc/ssh/sshd_config, il faut authoriser le forward X11

X11Forwarding yes

Test avec firefox (via Snap)

$ ssh -CXY hubert@hubert.dubois.fr
  • C: compression
  • X: X11 forward
  • Y: trusted

puis

$ firefox
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
Error: cannot open display: localhost:10.0
X11 connection rejected because of wrong authentication

Bon, il y a un soucis.

Essayons d’installer un windows manager et tout le X en dépendances:

$ apt-get install i3 x11-apps

xeyes fonctionne !

$ ssh -CXY hubert@hubert.dubois.fr xeyes

mais firefox, toujours pas :(

$ ssh -CXY hubert@hubert.dubois.fr firefox
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
Error: cannot open display: localhost:11.0
X11 connection rejected because of wrong authentication.

Alors apparement il y aurait un problème avec les installations via Snap. Il faut exporter XAUTHORITY=~/.Xauthority

export XAUTHORITY=$HOME/.Xauthority

X11 Forward de Discord (.deb)

Alors oui mais non, ça ne change rien. C’est le moment de virer Snap du systeme et d’avoir la paix. Je viens de tester avec discord, je n’ai rencontré aucun problème.

Installation sur Serveur:

$ wget "https://discord.com/api/download?platform=linux&format=deb" -O discord.deb
$ sudo apt-get install ./discord.deb

Lancement de discord depuis Client:

$ ssh -CXY hubert@hubert.dubois.fr discord

all good.

Cleanup de Snap

$ snap remove --purge firefox
$ apt remove --autoremove snapd
$ echo "Package: snapd
Pin: release a=*
Pin-Priority: -10" >> /etc/apt/preferences.d/nosnap.pref
$ apt update

Cf DebugPoint

Réinstallation de firefox (.deb)

$ add-apt-repository ppa:mozillateam/ppa
$ apt update
$ apt install -t 'o=LP-PPA-mozillateam' firefox

Victoire

Je peux maintenant facilement exec une application GUI via ssh depuis mon RaspberryPI:

Running firefox

Il reste maintenant à savoir si c’est réellement utile et agréable à utiliser au quotidien.