Tunnel SSH : introduction à la redirection de ports SSH

Les tunnels SSH vous permettent d’accéder à des sites Internet qui ne sont pas disponibles depuis votre réseau. Au lieu de naviguer directement vers le site depuis votre réseau, l’utilisation d’un tunnel SSH (également appelée redirection de port) vous fait emprunter un détour via un serveur SSH.

Serveurs virtuels (VPS) avec IONOS

Hébergement VPS puissant et économique pour l'exécution de vos applications personnalisée, avec conseiller personnel et assistance 24/7.

Certificat SSL
Stockage 100% SSD
Prêt en 55 s

Qu’est-ce qu’un tunnel SSH ?

À l’instar des vrais tunnels, un tunnel SSH a pour rôle de relier un point A à un point B. Le point A est un ordinateur qui se situe, en général, au sein d’un réseau non sécurisé. Le point B est un serveur ou une adresse Internet à laquelle vous ne pouvez pas ou ne voulez pas avoir accès depuis votre réseau. Les tunnels SSH font office de liens entre différents serveurs et connectent les ports TCP de deux ordinateurs l’un avec l’autre. N’importe quel port TCP peut être redirigé via l’utilisation d’un tunnel SSH, ce qui explique pourquoi on appelle également ce processus redirection de port SSH ou redirection SSH.

Vous pouvez utiliser n’importe quel serveur ou presque en tant que serveur SSH. Par exemple, un serveur SSH Raspberry Pi fera très bien l’affaire.

Conseil

Vous êtes toujours à la recherche du serveur idéal ? Ne cherchez plus ! Découvrez le serveur Cloud de IONOS et trouvez enfin le serveur adapté à vos besoins.

Mais que transporte exactement un tunnel SSH ? Certains protocoles TCP peuvent être utilisés en toute sécurité avec un tunnel SSH, et le protocole email SMTP a également recours à des tunnels SSH. Le SSH fait en sorte que les données transportées dans le tunnel soient sûres.

Les tunnels SSH : quels usages ?

Il existe différents usages pour la redirection de port en SSH (acronyme de « secure shell », « shell sécurisé» en français). En règle générale, la redirection de port SSH est utilisée pour créer une connexion chiffrée entre un ordinateur local (l’hôte local) et un ordinateur distant. L’utilisation de ce réseau virtuel permet d’outrepasser certaines restrictions d’accès. Vous aurez l’air d’être sur ce réseau, alors qu’en réalité vous vous contenterez d’y accéder à l’aide d’un tunnel SSH. Cela ressemble à un réseau privé virtuel (VPN) mais s’en distingue cependant. Prenez garde à ne cependant pas confondre les deux.

Si vous transportez des données issues de services qui ont recours à un protocole chiffré, vous pouvez utiliser la redirection SSH pour chiffrer le transfert de données. Un SSH File Transfer Protocol (« Protocol de Transfert de Fichier SSH »), SFTP en abrégé, sera utilisé à cette fin. Les tunnels SSH offrent également une sécurité accrue lorsque vous vous aventurez au sein de réseaux que vous ne connaissez pas, par exemple ceux d’un hôtel ou d’un café. Les clés SSH utilisent un chifrement asymétrique et offrent un niveau de sécurité encore plus élevé.

Il convient de noter que le recours aux tunnels SSH est fréquemment utilisé par les hackers, qui créent des backdoors à l’intérieur des réseaux internes de manière à ce que des intrus puissent facilement accéder aux données.

Conseil

Vous voulez utiliser le SSH à son plein potentiel pour votre site ? Le package d’hébergement Web de IONOS comprend un certificat SSL Wildcard et vous fournit tout ce dont vous avez besoin ! Si vous souhaitez juste améliorer votre site Internet, jetez un œil aux certificats SSL proposés par IONOS. Pour profiter d’une sécurité accrue pour votre site, par exemple grâce à l’authentification à deux facteurs, utilisez alors la protection de domaine de IONOS.

Utiliser des tunnels SSH sous Linux

Plusieurs options s’offrent à vous pour créer un tunnel SSH.

La redirection de port locale SSH

La méthode la plus répandue pour mettre en place un tunnel SSH est la redirection de port local. Ceci implique d’accéder aux ressources d’un réseau local depuis votre PC local en redirigeant un port depuis votre ordinateur vers un porte situé sur le serveur SSH. Le port peut ensuite être redirigé vers un port de l’ordinateur cible.

Pour configurer une redirection de port local, utilisez la commande du terminal ci-dessous sur les systèmes d’exploitation basés sur Unix ou macOS.

ssh -L local_port: remote_address: remote_port username@server.com

Pour commencer, vous devez définir quel port vous souhaitez transférer (local_port). Vous pouvez utiliser n’importe quel numéro de port supérieur à 1 024. Les ports comportant des numéros plus bas sont privilégiés et ne sont accessibles que par la racine. Ensuite, entrez l’adresse IP du serveur cible (remote_address) et vos identifiants (remote_port).

Illustrons cela par un exemple. Imaginons que vous souhaitez vous connecter à un serveur situé au sein de votre bureau et dont l’adresse IP est 123.234.1.111 à l’intérieur du réseau de l’entreprise. Vous pouvez accéder au serveur SSH de votre bureau à l’aide de ssh.test.com. Votre nom d’utilisateur sera « Testuser ». La commande que vous utiliserez pour configurer le tunnel SSH pour le port 1234 ressemblera à :

ssh -L 8888: 123.234.1.111: 1234 Testuser@ssh.test.com

Après avoir exécuté la commande, vous aurez accès au serveur de l’entreprise via le port 8888. Si le serveur permet l’accès Web, vous pourrez également accéder au serveur du bureau via

localhost

. Les données que vous enverrez au port 8888 sur votre PC seront transférées au port 1234 sur l’ordinateur cible à l’aide du tunnel SSH.

La redirection de port distant SSH

La redirection de port à distance connecte un port issu du serveur SSH à un port de l’ordinateur client, lequel peut ensuite établir une connexion vers le PC cible. Ce type de redirection de port est, en général, utilisé pour fournir un accès aux services internes à une personne externe. La commande du terminal pour configurer un tunnel SSH distant se présente comme suit :

ssh -R remote_port: target_address: target_port user@ssh_server_address

Si vous souhaitez écouter un port dont le numéro de port est, par exemple, 8080, et envoyer les données au port numéro 3000 de votre PC local, la commande ressemblera à la suivante :

ssh -R 8080: 127.0.0.1:3000 user@remote.host

Dans l’exemple ci-dessus, le serveur SSH a pour adresse remote.host. Il est désormais possible d’accéder aux données que vous mettez en tunnel depuis l’extérieur en entrant cette adresse dans un navigateur, en y ajoutant le numéro de port :

remote.host:8080

Si vous êtes confronté à des problèmes lors de la mise en place d’une redirection de port distant, ceci peut être dû à la configuration de votre serveur SSH. La redirection de port distant est en général désactivée par défaut. Vous pouvez modifier cela en activant GatewayPorts dans votre fichier de configuration de serveur SSH. Pour ce faire, ouvrez le fichier et définissez « GatewayPorts » sur « yes ».

La redirection de port dynamique SSH

Une troisième manière d’avoir recours aux tunnels SSH implique la redirection de port dynamique, laquelle vous permet d’utiliser une prise sur votre PC local qui sera utilisée comme une sorte de proxy SOCKS. Toutes les applications qui ont recours à un proxy SOCKS se connecteront alors au serveur SSH et feront passer leur trafic par le tunnel. Ce type de redirection de port est souvent employé pour mettre en tunnel du trafic de navigateur Web.

Pour configurer une redirection dynamique de port, utilisez la commande de terminal suivante :

ssh -D [local_ip_address:]local_port user@ssh_server_address

Si vous n’entrez pas d’adresse IP locale, l’adresse IP 127.0.0.1 (localhost sera utilisée automatiquement. Si, par exemple, vous configurez un tunnel SOCKS pour le port 9090 à l’aide de l’adresse remote.host, la commande ressemblera à la suivante :

ssh -D 9090 -N -f user@remote.host

Une fois que vous aurez configuré le proxy SOCKS, assurez-vous de configurer correctement l’application qui utilise le proxy.

Les tunnels SSH et Windows

Vous pouvez également configurer des tunnels SSH sous Windows. Étant donné que l’accès au terminal n’est pas aussi centralisé sous Windows, vous aurez à cœur d’utiliser l’un des multiples outils pratiques disposant d’une interface utilisateur, tels que PuTTY. Ces derniers font de la configuration d’un tunnel SSH un vrai jeu d’enfant.

Une fois que vous aurez téléchargé et installé PuTTY, ouvrez l’outil. Dans le menu Démarrer, sous « Hostname », saisissez l’adresse IP du serveur SSH auquel vous souhaitez vous connecter. Rendez-vous ensuite dans « Connection/SSH/Tunnels », où vous pourrez entrer le port source et le port cible dans les champs « Source Port » et « Destination ». Enfin, cliquez sur le bouton « Ouvrir » pour établir la connexion. Vous devriez à présent être en mesure d’accéder au port sur un navigateur en utilisant 127.0.0.1:port_number.

Les tunnels SSH inversés

Pour accéder à des ordinateurs à l’aide d’une adresse IP privée, vous aurez besoin d’un tunnel SSH inversé. Avec un tunnel SSH inversé, l’ordinateur distant auquel vous souhaitez accéder peut créer une connexion vers votre PC local. Vous pourrez ensuite utiliser cette connexion pour créer une nouvelle connexion du PC local à l’ordinateur distant.

La commande suivante configurera un tunnel SSH depuis l’ordinateur distant :

ssh -Nf -R 2222:localhost:22 user@local.computer

L’ordinateur local peut ensuite utiliser la commande suivante pour se connecter à l’ordinateur distant :

ssh localhost -p 2222