VNC via tunnel SSH à double authentification depuis un smartphone Android

VNC via tunnel SSH à double authentification depuis un smartphone Android

Cet article est le quatrième (après “Activer la double authentification sur un accès distant SSH“, “Accéder à une machine VNC dans une page web“, et “VNC via un tunnel SSH“, que je vous suggère de lire avant celui-ci pour avoir une vision complète).

Toujours soucieux d’améliorer mon système de PC Linux à la maison accessible depuis n’importe où en mobilité, via une connexion VNC sécurisée en passant par un tunnel SSH lui-même sécurisé par la double authentification de Google Authenticator, je présente ici la solution que j’ai mise en place pour accéder ce PC maison depuis mon smartphone Android. L’écran est petit, moins agréable que depuis un PC il faut bien le reconnaitre, mais c’est parfaitement fonctionnel et ça peut dépanner. En tout cas, je voulais absolument avoir cette possibilité.

La config SSH+VNC est déjà faite, on ne la touche pas (voir les articles précédents). Il n’y a que le smartphone Android à configurer. Pour cela, on va installer “VNC viewer remote desktop” et “ConnectBot“.

Ces deux applications sont gratuites.

Le principe d’installation est similaire à ce qu’on a fait sur PC, à savoir créer avec ConnectBot une connexion SSH doublée d’un tunnel écoutant sur un port local (5902), lui-même redirigeant les connexions entrantes vers le PC maison sur le port de VNC (5900).

Paramétrage de ConnectBot

On ajoute un serveur en le paramétrant comme ci-dessus : nom@machine. Une fois le serveur créé, un appui long avec le doigt sur le serveur fait apparaître le menu permettant de paramétrer les redirections de ports pour ce serveur.

On paramètre une redirection de port comme ci-dessus. Le port 5902 sera l’entré du tunnel SSH sur le smartphone, et tout ce qui rentra par là sera envoyé en chiffré vers la machine a l’adresse IP 192.168.1.199 sur le port du serveur VNC (5900). Si vous faites le parallèle avec ce qu’on a fait sur PC, vous remarquez une anomalie : le serveur de destination devrait être toto.com et non 192.168.1.199.

Sauf que ConnectBot ne semble pas fonctionner comme le client SSH de Linux. Pour que cela marche, il faut donc mettre l’adresse IP qu’a votre PC maison sur son réseau local de la maison (coup de bol, je lui ai mis une adresse IP fixe. Avec une adresse IP donnée dynamiquement par DHCP, il y aurait des problèmes).

Ensuite, une fois paramétré le client SSH et la redirection de port, il suffit de cliquer sur le serveur paramétré et renseigner le mot de passe ainsi que le code de vérification Google Authenticator que le serveur SSH distant ne manquera pas de demander. Au final, on se retrouve connecté sur une connexion SSH classique (qui ne nous sert pas à grand chose, mais qu’on doit quand même lancer pour que cela marche), sauf qu’en parallèle de cette connexion, notre tuyau SSH chiffré écoutant sur le port 5902 du smartphone a été lancé.

Paramétrage de VNC viewer

Tout en laissant la connection SSH de ConnectBot active, on lance VNC Viewer et l’on paramètre une entrée VNC comme si le serveur VNC était situé en local (localhost) sur le port 5902.

Il suffit d’appuyer sur CONNECT en bas de l’écran, et la magie opère, quel que soit l’endroit où l’on se trouve dans le monde, on prend le contrôle de notre PC Linux à la maison, son interface graphique apparaissant à l’écran.

Une fois qu’on a terminé ce qu’on avait à faire sur ce PC maison, il suffit de couper la connexion et de tuer VNC viewer, et de ne pas oublier de taper la commande “exit” dans le shell SSH sous ConnectBot, car tuer ConnectBot ne suffit pas à couper la liaison SSH, la présence du symbole de ConnectBot dans la barre du haut du smartphone pour preuve.