Prendre le contrôle de son PC de travail depuis la maison en mode graphique avec VNC et SSH

Je peux déjà gérer les documents qui sont sur le pc-serveur de l’école grâce à SSH (voir ce billet). Mais cela ne me suffit pas, je veux pouvoir utiliser le pc de direction de l’école, sans aucune restriction, depuis chez moi, comme si j’étais physiquement au bureau, imprimer mes documents sur l’imprimante de l’école, faire les mises-à-jour, gérer le réseau, utiliser les diverses applications  etc.

Cela m’a demandé un peu de lecture, car si la solution est simple, elle est noyée dans de nombreux documents très (trop) complets qui m’ont perdu. C’est grâce aux conseils d’un internaute du forum ubuntu-fr.org (Tamarou) que j’ai compris la simplicité de la démarche.

Ceci utilise vnc (virtual network computing). Il serait possible de contrôler un pc distant avec uniquement vnc (ce que nous verrons pour commencer), cependant son niveau de sécurité est insuffisant et il est préférable de l’encapsuler dans du SSH.

Accéder et contrôler un pc distant avec VNC seul :

(déconseillé, mais à expérimenter temporairement pour vérifier que ça fonctionne)

Ubuntu est déjà équipé avec vino (qui gère la partie serveur, le pc à contrôler) vinagre (pour le client, mais assez moyen à l’usage) ou encore TSC- Terminal Server Client (qui est beaucoup plus productif d’après mon expérience). Cependant, TSC n’utilise plus le protocole vnc par défaut et il faut l’ajouter en cliquant sur ce lien apt : xvnc4viewer.

Pour utiliser vnc seul, il suffit d’ouvrir le port 5900 de son firewall et de son routeur.

Sur le serveur,

cliquer sur « Système »-> »préférences »-> »Bureau à distance »

Cochez les cases pour autoriser « d’autres utilisateurs à voir votre bureau » et « d’autres utilisateurs à contrôler votre bureau »

Décochez « chaque accès doit être confirmé », sinon quelqu’un doit rester à coté du serveur et on ne recherche pas vraiment cela dans le cas présent

Cochez « l’utilisateur doit saisir ce mot de passe » et choisissez un mot de passe de 8 caractères vraiment complexe, style « M4cy!9@Ix »

Choisissez l’affichage de l’icône selon votre intérêt. Personnellement, dans ce cas, je choisis « N’afficher une icône que lorsque quelqu’un est connecté », mais si on cherche à surveiller ses ados, on fera autrement.

Sur le client,

Cliquez sur « Applications »-> »internet »-> »Terminal Serveur Client »

Il y a des onglets pour régler les options à votre convenance.

Dans la case ordinateur, donner l’adresse IP du serveur, ou le nom de domaine DynDNS ou autre si comme moi vous subissez une adresse dynamique. (on peut avoir besoin de préciser le port dans certains cas,  Mon-IP:5900)

Dans la case protocole, choisissez VNC et cliquez sur « se connecter ».

Le password choisi sur le serveur est demandé.

Le bureau distant s’ouvre selon les options choisies.

C’est simple et fonctionnel, mais bien moins sûr que du ssh, alors comment ajouter la sécurité au prix d’une manipilation de plus ?

Accéder et contrôler un pc distant avec VNC et SSH :

(la documentation demande à ce que l’on edite le fichier de configuration de ssh en tapant dans un terminal
sudo gedit /etc/ssh/sshd_config
et de créez  la ligne suivante :
GatewayPorts yes
Enregistrez
Je ne suis pas sûr de l’importance de cette phase, mais je l’ai effectuée, n’hésitez pas à m’éclairer.)

Il faut utiliser pour cela la ligne de commande. Ouvrez un terminal sur le client et recopiez cette ligne en l’adaptant :

ssh user@server.net -L5901:localhost:5900

Où vous remplacez « user » par l’identifiant que vous utilisez sur le pc à contrôler, « serveur.net » soit par l’adresse IP du pc à contrôler, soit par le nom de domaine style dynDNS choisi (exemple blablabla.homelinux.net) et 5901 par le port que vous voulez et que vous n’utilisez pas déjà (5901 est un bon choix).

Cette ligne va faire passer vnc (qui utilise par défaut le port 5900), non pas par le port 5900, mais par SSH (port 22 habituellement) et au niveau local va lui attribuer le port 5901 pour qu’on puisse le trouver à la maison.

Le mot de passe administration système du pc à contrôler est demandé (celui qu’on utilise habituellement pour administrer le pc à contrôler)

ATTENTION : ce terminal doit resté ouvert tout le temps où la prise de contrôle est nécessaire, car le processus SSH se fermera avec lui.

Pour trouver mon bureau distant du travail, à la maison, je vais demander au client VNC d’ouvrir l’adresse locale sur le port 5901.

Pour cela, j’ouvre un second terminal (ou un second onglet du premier terminal) et je recopie cette ligne :

xvnc4viewer 127.0.0.1 :5901

Un mot de passe VNC est demandé. Il s’agit de celui qui a été choisi pour protéger VNC (« M4cy!9@Ix »).

Vous contrôlez le pc du travail, depuis votre canapé \o/.

Accéder au serveur de l’école depuis n’importe où grâce à SSH

Je travaille beaucoup à la maison pour préparer mes cours, mes vidéos, mes bandes sonores, gérer l’administratif etc. et j’avais, jusqu’à présent recours à dropbox, qui permet de synchroniser plusieurs dossiers de plusieurs pc. Cependant, cette solution qui fonctionne très bien n’est pas libre, et utilise un serveur que je ne contrôle pas (ce qui est particulièrement gênant quand on travaille avec des enfants et leurs familles). De plus, le service est limité en taille.

Je cherchais depuis des mois une solution libre et sécure pour accéder à mes dossiers de travail depuis n’importe où, et je suis tombé des nues lorsque j’ai découvert que cela relève d’un protocole basique d’internet, le sftp … Je me suis trouvé bien bête.

À l’école : d’abord, sur le serveur de l’école, sous GNU/linux bien sûr, j’ai installé le paquet openssh-server puis fail2ban pour éviter les attaques en force brute (3 tentatives de connexion ratées bannissent l’IP du bot pour 15 minutes).

Je dois ensuite autoriser les connexions sécurisées depuis l’extérieur en ouvrant un port du routeur (livebox, dans mon cas, à l’école). J’y accède par l’adresse 192.168.1.1 à taper dans un navigateur. puis renseigner les login et password pour accéder à la livebox. Enfin, dans l’onglet serveur LAN : nouvelle entrée, nom : SSH FTP par exemple, accès activé : oui, du port : 22 au port : 22, protocole : TCP,  Adresse IP locale, celle du serveur (192.168.1.xx, pour la connaître, il suffit de taper ifconfig dans une console)

Ensuite, comme le FAI de l’école est malheureusement « orange », je n’ai pas d’IP fixe, alors je dois demander à un service tiers de toujours synchroniser mon adresse IP du serveur avec une adresse choisie, disons mon-ecole.homelinux.org, qui elle sera fixe, même si l’IP de la livebox change. Imaginons que l’IP de la livebox change , je n’ai aucun moyen de la connaître depuis la maison et je ne peux plus accéder au serveur à distance, c’est ballot …

J’utilise pour cela les services gratuits de dyndns.com . Je choisis un « free domain name » (par exemple « mon-ecole.homelinux.org »), je clique sur « Add ». Je choisis un identifiant et un mot de passe, j’indique une adresse email valide. J’attends (par mail) le lien pour activer le service et voilou.

Il faut que je configure le service dns de la livebox. Je retape 192.168.1.1 dans le navigateur internet, renseigne les login et password. Puis configuration avancée, réseau, dynDNS. Je renseigne l’identifiant et le mot de passe choisis chez dyndns, ainsi que le nom d’hôte (mon-ecole.homelinux.org par exemple). On applique, OK et voilà, c’est fini pour le serveur.

Depuis la maison : je crée, dans la barre de menu (clic droit sur la barre puis « ajouter au tableau de bord »), un raccourci non pas d’application, mais d’emplacement. Je choisis une icône « kivabien » et je renseigne les cases :

  • Nom -> Serveur-École
  • Emplacement : sftp://login@mon-ecole.homelinux.org:22/home/login , où il faut remplacer « login » par votre login de démarrage du serveur, « mon-ecole.homelinux.org » par le domaine choisi chez dyndns et  22  par le port choisi sur la livebox si vous avez pris autre chose que 22.
  • Commentaire (facultatif) : un lien direct pour gérer les dossiers et fichiers du taf, la classe ! (par exemple)

Vous cliquez sur cette icône et lors de la première connexion, une fenêtre vous demande de confirmer cet accès d’exception. Vous confirmez. On vous demande le mot de passe du serveur (le mot de passe d’administration du serveur), que vous pouvez ne renseigner que pour ce moment, pour cette session ou pour toujours, puis une fenêtre nautilus s’ouvre … c’est tout simplement le /home/login du serveur à distance !

On peut y faire ce que l’on veut : y transférer des fichiers depuis la maison, en télécharger, en supprimer, les déplacer etc. sans aucune limite de taille.

Bref, quelques minutes d’actions adaptées à un débutant comme moi, pour travailler sur le serveur de l’école comme s’il était chez moi … la classe !