Android

Comment configurer le tunneling ssh (redirection de port)

SSH Tunnel with PuTTY

SSH Tunnel with PuTTY

Table des matières:

Anonim

La tunnellisation SSH ou la redirection de port SSH est une méthode de création d'une connexion SSH chiffrée entre un client et une machine serveur à travers laquelle les ports de services peuvent être relayés.

Le transfert SSH est utile pour transporter des données réseau de services qui utilisent un protocole non chiffré, tel que VNC ou FTP, accéder à du contenu géo-restreint ou contourner des pare-feu intermédiaires. Fondamentalement, vous pouvez transférer n'importe quel port TCP et tunneler le trafic via une connexion SSH sécurisée.

Il existe trois types de redirection de port SSH:

  • Transfert de port local. - Transmet une connexion de l'hôte client à l'hôte du serveur SSH, puis au port hôte de destination. - Transmet un port de l'hôte serveur à l'hôte client, puis au port hôte de destination. - Crée un serveur proxy SOCKS qui permet la communication sur une gamme de ports.

, nous expliquerons comment configurer des tunnels SSH cryptés locaux, distants et dynamiques.

Transfert de port local

Le transfert de port local vous permet de transférer un port sur la machine locale (client ssh) vers un port sur la machine distante (serveur ssh), qui est ensuite transféré vers un port sur la machine de destination.

Dans ce type de transfert, le client SSH écoute sur un port donné et tunnelise toute connexion à ce port vers le port spécifié sur le serveur SSH distant, qui se connecte ensuite à un port sur la machine de destination. La machine de destination peut être le serveur SSH distant ou toute autre machine.

La redirection de port locale est principalement utilisée pour se connecter à un service distant sur un réseau interne tel qu'une base de données ou un serveur VNC.

Sous Linux, macOS et autres systèmes Unix pour créer un transfert de port local, passez l'option -L au client ssh :

ssh -L LOCAL_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Les options utilisées sont les suivantes:

  • LOCAL_PORT - L'IP de la machine locale et le numéro de port. Lorsque LOCAL_IP est omis, le client ssh se lie sur localhost. DESTINATION:DESTINATION_PORT - L'adresse IP ou le nom d'hôte et le port de la machine de destination. SERVER_IP - L'adresse IP de l'utilisateur et du serveur SSH distant.

Vous pouvez utiliser n'importe quel numéro de port supérieur à 1024 tant que LOCAL_PORT . Les nombres de ports inférieurs à 1024 sont des ports privilégiés et ne peuvent être utilisés que par root. Si votre serveur SSH écoute sur un port autre que 22 (par défaut), utilisez l'option -p .

Le nom d'hôte de destination doit pouvoir être résolu à partir du serveur SSH.

Disons que vous avez un serveur de base de données MySQL en cours d'exécution sur la machine db001.host sur un réseau interne (privé), sur le port 3306 accessible depuis la machine pub001.host et que vous souhaitez vous connecter à l'aide de votre client mysql machine locale au serveur de base de données. Pour ce faire, vous pouvez transférer la connexion comme suit:

ssh -L 3336:db001.host:3306 [email protected]

Une fois la commande exécutée, vous serez invité à entrer le mot de passe de l'utilisateur SSH distant. Après l'avoir entré, vous serez connecté au serveur distant et le tunnel SSH sera établi. C'est une bonne idée de configurer une authentification basée sur une clé SSH et de se connecter au serveur sans entrer de mot de passe.

Maintenant, si vous pointez votre client de base de données de machine locale sur 127.0.0.1:3336 , la connexion sera transmise au serveur MySQL db001.host:3306 via la machine pub001.host qui servira de serveur intermédiaire.

Vous pouvez transférer plusieurs ports vers plusieurs destinations dans une seule commande ssh. Par exemple, vous avez un autre serveur de base de données MySQL en cours d'exécution sur la machine db002.host et vous souhaitez vous connecter aux deux serveurs à partir de votre client local que vous exécuterez:

ssh -L 3336:db001.host:3306 3337:db002.host:3306 [email protected]

Pour vous connecter au deuxième serveur, vous utiliserez 127.0.0.1:3337 .

Lorsque l'hôte de destination est le même que le serveur SSH au lieu de spécifier l'adresse IP ou le nom d'hôte de l'hôte de destination, vous pouvez utiliser localhost .

Supposons que vous devez vous connecter à une machine distante via VNC qui s'exécute sur le même serveur et qu'il n'est pas accessible de l'extérieur. La commande que vous utiliseriez est:

ssh -L 5901:127.0.0.1:5901 -N -f [email protected]

L'option -f indique à la commande ssh de s'exécuter en arrière-plan et à -N ne pas exécuter de commande à distance. Nous utilisons localhost car le VNC et le serveur SSH s'exécutent sur le même hôte.

Transfert de port à distance

La redirection de port à distance est l'opposé de la redirection de port locale. Il vous permet de transférer un port sur la machine distante (serveur ssh) vers un port sur la machine locale (client ssh), qui est ensuite transféré vers un port sur la machine de destination.

Dans ce type de transfert, le serveur SSH écoute sur un port donné et tunnelise toute connexion à ce port vers le port spécifié sur le client SSH local, qui se connecte ensuite à un port sur la machine de destination. La machine de destination peut être la machine locale ou toute autre machine.

Sous Linux, macOS et autres systèmes Unix pour créer une redirection de port à distance, passez l'option -R au client ssh :

ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Les options utilisées sont les suivantes:

  • REMOTE_PORT - L'IP et le numéro de port sur le serveur SSH distant. Une REMOTE vide signifie que le serveur SSH distant se liera sur toutes les interfaces. DESTINATION:DESTINATION_PORT - L'adresse IP ou le nom d'hôte et le port de la machine de destination. SERVER_IP - L'adresse IP de l'utilisateur et du serveur SSH distant.

La redirection de port locale est principalement utilisée pour donner accès à un service interne à quelqu'un de l'extérieur.

Supposons que vous développez une application Web sur votre ordinateur local et que vous souhaitez afficher un aperçu à votre collègue développeur. Vous n'avez pas d'adresse IP publique, donc l'autre développeur ne peut pas accéder à l'application via Internet.

ssh -L 8080:127.0.0.1:3000 -N -f [email protected]

La commande ci-dessus fera en sorte que le serveur ssh écoute sur le port 8080 et tunnelise tout le trafic de ce port vers votre machine locale sur le port 3000 .

Maintenant, votre collègue développeur peut taper the_ssh_server_ip:8080 dans son navigateur et prévisualiser votre application géniale.

Redirection de port dynamique

La redirection de port dynamique vous permet de créer un socket sur la machine locale (client ssh) qui agit comme un serveur proxy SOCKS. Lorsqu'un client se connecte à ce port, la connexion est transmise à la machine distante (serveur ssh), qui est ensuite transmise à un port dynamique sur la machine de destination.

De cette façon, toutes les applications utilisant le proxy SOCKS se connecteront au serveur SSH et le serveur transmettra tout le trafic à sa destination réelle.

Sous Linux, macOS et autres systèmes Unix pour créer une redirection de port dynamique (SOCKS), passez l'option -D au client ssh :

ssh -D LOCAL_PORT SSH_SERVER

Les options utilisées sont les suivantes:

  • LOCAL_PORT - L'IP de la machine locale et le numéro de port. Lorsque LOCAL_IP est omis, le client ssh se lie sur localhost. SERVER_IP - L'adresse IP de l'utilisateur et du serveur SSH distant.

Un exemple typique de redirection de port dynamique consiste à tunneler le trafic du navigateur Web via un serveur SSH.

La commande suivante créera un tunnel SOCKS sur le port 9090 :

ssh -D 9090 -N -f [email protected]

Une fois le tunneling établi, vous pouvez configurer votre application pour l'utiliser. Cet article explique comment configurer Firefox et le navigateur Google Chrome pour utiliser le proxy SOCKS.

La redirection de port doit être configurée séparément pour chaque application pour laquelle vous souhaitez canaliser le trafic.

Configurer le tunneling SSH dans Windows

Les utilisateurs Windows peuvent créer des tunnels SSH à l'aide du client PuTTY SSH. Vous pouvez télécharger PuTTY ici.

  1. Lancez Putty et entrez l'adresse IP du serveur SSH dans le champ Host name (or IP address) .

    Une nouvelle fenêtre vous demandant votre nom d'utilisateur et votre mot de passe s'affichera. Une fois que vous aurez entré votre nom d'utilisateur et votre mot de passe, vous serez connecté à votre serveur et le tunnel SSH sera démarré.

    La configuration de l'authentification par clé publique vous permettra de vous connecter à votre serveur sans entrer de mot de passe.

Conclusion

Nous vous avons montré comment configurer des tunnels SSH et transférer le trafic via une connexion SSH sécurisée. Pour faciliter l'utilisation, vous pouvez définir le tunnel SSH dans votre fichier de configuration SSH ou créer un alias Bash qui configurera le tunnel SSH.

sécurité ssh