Autossh

De ArchwikiFR


Autossh est un outil permettant de s'assurer qu'une session ssh reste ouvert en permanence en la testant et en la relançant si nécessaire. Ceci est particulièrement utile pour les tunnels distants.

Installation

Le paquet autossh se trouve dans Community. Il n'y a donc rien de bien compliqué pour l'installer :

pacman -S autossh

Utilisation

L'outil s'utilise en ligne de commande. Prenons un exemple. Votre machine se trouve au boulot derrière un proxy. Vous n'avez pas la main sur la configuration du proxy et le port ssh est bloqué. Partant de là, vous ne pouvez pas vous connecter depuis ailleurs sur internet sur votre machine. La solution à ce problème est d'ouvrir un tunnel ssh distant depuis votre machine vers une machine donnée sur internet. Le but de cet article n'étant pas d'expliquer le fonctionnement des tunnels, nous vous invitons à vous rendre sur la page ssh.

Donc, pour notre exemple, nous obtenons la ligne de commande suivante :

autossh -M9042 -f -R 1234:localhost:23 monserveur.mondomaine.be

Vous ne savez pas trop ce que fait cette commande ? pas de soucis, on va l'expliquer argument par argument.

  • -M9042 : On spécifie un port pour le "monitoring". Ce port doit être disponible et au dessus de 1024.
  • -f : pour que autossh s'exécute en tâche de fond.
  • -R : pour spécifier que c'est un tunnel distant (Remote). Pour un tunnel local on aurait choisit -L
  • 1234 : c'est le port à utiliser sur le serveur distant
  • localhost : on spécifie la sortie du tunnel côté serveur local. Ici, le client lui-même. On aurait pu spécifier une autre machine du réseau local (192.168.0.15 par exemple)
  • 23 : le port à utiliser côté serveur local. On va se connecté sur la cible (localhost ici) sur ce port là (23 pour ssh ici)
  • monserveur.mondomaine.be : le serveur distant. Celui auquel on devra se connecter pour atteindre emprunter le tunnel.

Maintenant qu'on a expliqué l'ensemble des arguments séparément, expliquons le tunnel dans l'ensemble :

  • On ouvre une connexion "A" depuis notre machine vers le serveur monserveur.mondimaine.be
  • On garde la connexion "A" ouverte
  • On rentre chez soit
  • On se connecte (connexion "B") en ssh à monserveur.mondomaine.be sur le port 1234
  • Le serveur détecte qu'il s'agit de l'entrée du tunnel et nous envoi via la connexion "A" sur le serveur au travail sur le port 23
  • On est connecté en ssh sur la machine du travail derrière le proxy \o/

Dans ce premier scénario, autossh n'apporte rien. C'est l'utilisation de base du tunnel ssh. Mais supposons maintenant que pour une raison ou une autre, il y a une panne réseau dans l'entreprise. Les connexions "A" et "B" se trouvent alors coupées. Le réseau est rétabli quelques instants plus tard mais le mal est fait. Si on avait utilisé un simple tunnel, il aurait été perdu. C'est là que autossh entre en jeu, il va se rendre compte que la connexion "A" a été coupée et va la relancer de lui-même. Si on essaye alors de relancer la connexion "B", nous pourrons de nouveau contacter la machine au travail.