SSH Tunnel with PuTTY
Table des matières:
- Transfert de port local
- Transfert de port à distance
- Redirection de port dynamique
- Configurer le tunneling SSH dans Windows
- Conclusion
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. LorsqueLOCAL_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. UneREMOTE
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. LorsqueLOCAL_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.
-
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é sshComment configurer, configurer, utiliser le contrôle parental dans Windows 7
Apprenez comment activer, désactiver, configurer et utiliser la fonction de contrôle parental dans Windows 7 pour surveiller et contrôler les activités Internet des enfants.
Comment configurer ssh tunneling pour contourner un pare-feu
Un pare-feu est une bonne chose, mais si cela vous empêche de faire quelque chose, le tunneling SSH est une bonne option à explorer.
Comment changer le port ssh sous linux
Par défaut, SSH écoute sur le port 22. La modification du port SSH par défaut ajoute une couche de sécurité supplémentaire à votre serveur en réduisant le risque d'attaques automatisées. Ce tutoriel explique comment changer le port SSH par défaut sous Linux.