Comment utiliser un tunnel SSH pour accéder à des serveurs restreints
Savoir comment créer un tunnel SSH peut vous aider à accéder à des réseaux et systèmes autrement inaccessibles.
Le tunneling SSH ou le transfert de port SSH est une méthode permettant de créer une connexion SSH chiffrée entre un client et un serveur, par laquelle les ports des services peuvent être relayés.
Tunnel SSH local avec redirection de port
Vous pouvez utiliser un tunnel ssh local lorsque vous souhaitez accéder à une ressource à laquelle vous ne pouvez pas accéder directement, mais à laquelle un serveur ssh auquel vous avez accès peut. Voici quelques scénarios.
Proxy vers le serveur distant
Dans l'image ci-dessus, l'hôte bleu ne peut pas atteindre http://192.168.0.3, mais peut se connecter en ssh à 192.168.0.2. La commande ssh suivante exécutée sur l'hôte bleu permettra à l'hôte bleu d'atteindre l'hôte rouge.
ssh -L 8080:192.168.0.3:80 reduser@192.168.0.2Maintenant, l'hôte bleu peut ouvrir un navigateur, aller sur http://localhost:8080, et être présenté avec la page web hébergée sur 192.168.0.3.
Transfert de port local
Dans l'image ci-dessus, l'hôte bleu souhaite se connecter à l'hôte rouge sur le port 80 mais il y a un pare-feu entre les deux qui le refuse. Puisque l'hôte bleu peut se connecter en ssh à l'hôte rouge, nous pouvons créer un tunnel ssh de redirection de port local pour accéder à ce port.
La commande sur l'hôte bleu sera :
ssh -L 8080:192.168.0.2:80 reduser@192.168.0.2Maintenant, lorsque l'hôte bleu ouvre un navigateur et se rend à http://localhost:8080, il pourra voir tout ce que le serveur rouge a sur le port 80.
Syntax de redirection de port local
Cette syntaxe pour créer un tunnel de transfert de port SSH local est la suivante :
ssh -L <LPORT>:<RHOST>:<RPORT> <GATEWAY>Tunnel SSH distant avec redirection de port
Dans ce scénario, nous créons un tunnel ssh inversé. Ici, nous pouvons initier un tunnel ssh dans une direction, puis utiliser ce tunnel pour créer un tunnel ssh dans l'autre sens. Cela peut être utile lorsque vous déposez un ordinateur de drone à l'intérieur d'un réseau et que vous souhaitez qu'il « appelle à la maison ». Ensuite, lorsqu'il appelle à la maison, vous pouvez vous y connecter à travers le tunnel ssh établi.
Nous sommes sur l'hôte vert et souhaitons nous connecter en ssh à l'hôte bleu. Cependant, le pare-feu bloque directement cette connexion. Comme l'hôte bleu peut se connecter en ssh à l'hôte vert, nous pouvons nous connecter en utilisant cela, et lorsque l'hôte vert souhaite se connecter en ssh à l'hôte bleu, il peut emprunter ce tunnel préalablement établi.
L'hôte bleu initie un tunnel ssh comme ceci :
ssh -R 2222:localhost:22 greenuser@192.168.0.2Cela ouvre le port 2222 sur l'hôte vert, qui redirige ensuite ce port vers le port 22 sur l'hôte bleu. Donc, si l'hôte vert devait se connecter en ssh à lui-même sur le port 2222, il atteindrait alors l'hôte bleu.
L'hôte vert peut désormais se connecter au hôte bleu via ssh comme ceci :
ssh -p 2222 blueuser@localhostUtilisation de l'option -N
Lors de l'utilisation de ssh, vous pouvez spécifier le drapeau -N qui indique à ssh que vous n'avez pas besoin d'envoyer de commandes sur la connexion ssh lorsque celle-ci est établie. Cette option est souvent utilisée lors de la création de tunnels car souvent, nous n'avons pas besoin d'obtenir un invite.
AutoSSH
La commande autossh est utilisée pour ajouter de la persistance à vos tunnels. Sa tâche consiste à vérifier que votre connexion ssh est opérationnelle et, si ce n’est pas le cas, à en créer une.
Voici une commande autossh que vous pourriez reconnaître.
autossh -N -i /home/blueuser/.ssh/id_rsa -R 2222:localhost:22 [email L'option -i /home/blueuser/.ssh/id_rsa indique d'utiliser un certificat pour authentifier cette connexion ssh.
Maintenant, lorsque votre tunnel se déconnecte, il essaiera automatiquement de se reconnecter et continuera à essayer jusqu'à ce que cela réussisse. Pour le rendre persistant après un redémarrage, ajoutez la commande ssh en tant que tâche cron.



