Un tunnel SSH peut être utilisé pour sécuriser la communication entre un client et un serveur qui ne peut l'être autrement ; par exemple, lorsque tout ou partie de la source de l'application n'est pas disponible ou qu'il est jugé trop coûteux de la modifier pour y ajouter une communication cryptée.
D'après les questions que j'ai vues ces derniers mois, le processus de mise en place et d'utilisation d'un tunnel SSH n'est pas bien compris. Voici ma tentative d'explication.
Permettez-moi tout d'abord de décrire la méthode non sécurisée existante, une application sur un poste de travail se connecte à un service fonctionnant sur VOS et écoutant un port, appelé 12345. C'est la ligne verte de la figure 1 qui va du poste de travail au VOS. Les données envoyées via cette connexion ne sont pas cryptées, de sorte que toute personne ayant un accès à un réseau traversé par la connexion a la possibilité de capturer et de lire les données.
Pour sécuriser cette communication, la première chose qui est mise en place est la connexion SSH qui fera office de tunnel. Celle-ci va du poste de travail au port sur lequel le service SSH fonctionnant sous VOS est à l'écoute, le port par défaut étant le port 22 (la ligne rouge sur la figure 1). Le client SSH sur le poste de travail doit être configuré pour ne pas demander au service SSH sous VOS de configurer un pseudo terminal, sinon vous vous retrouvez avec une session de connexion et non un tunnel. La mise en place d'un tunnel SSH n'empêchera pas quelqu'un de capturer les données, mais ce qu'il capture sera crypté.
Le client SSH sur le poste de travail doit également être configuré avec deux informations supplémentaires. Tout d'abord, le port sur le poste de travail qui servira d'entrée au client de l'application dans le tunnel, appelé port 24680, mais tout port inutilisé peut être utilisé. Deuxièmement, l'adresse IP et le port avec lesquels le service SSH sur VOS se connectera lorsqu'une connexion est établie par le tunnel. Dans notre exemple, l'adresse IP serait 127.0.0.1 et le port 12345. La manière exacte dont cela sera configuré dépendra du client.
L'application client s'exécutant sur le poste de travail doit maintenant être configurée pour se connecter à l'hôte local du poste de travail (127.0.0.1) et au port d'entrée du tunnel, 24680. Il n'y a pas de changement pour le service d'application fonctionnant sur VOS, il doit toujours être en cours d'exécution et en écoute sur le port 12345. Les étapes sont les suivantes :
1) Démarrer ou confirmer que le service d'application fonctionne sur VOS
2) Démarrer ou confirmer que le service SSH (sshd) fonctionne sur VOS
3) Démarrer le client SSH sur le poste de travail et mettre en place la connexion au tunnel (ligne rouge)
4) Démarrez le client d'application sur le poste de travail et faites-le se connecter au port d'entrée du tunnel SSH (ligne bleue)
5) Le processus sshd sur VOS établit automatiquement une connexion avec le service d'application fonctionnant sur VOS (ligne orange)