GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser le tunneling SSH pour accéder aux serveurs restreints

En plus d'envoyer des données ssh, le protocole ssh peut tunneliser d'autres trafics entre deux hôtes. Les tunnels SSH les plus courants sont distants et locaux.

Le tunneling SSH ou le transfert de port SSH est une méthode de création d'une connexion SSH cryptée entre un client et une machine serveur via laquelle les ports de services peuvent être relayés.

Tunnel SSH local avec transfert 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 un serveur ssh auquel vous avez accès le 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 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 [email protected]

L'hôte bleu peut maintenant ouvrir un navigateur, accédez à http://localhost:8080 , et la page Web hébergée sur 192.168.0.3 s'affichera.

Transfert de port local

Dans l'image ci-dessus, l'hôte bleu veut se connecter à l'hôte rouge sur le port 80 mais il y a un pare-feu entre les deux qui le nie. Étant donné que l'hôte bleu peut se connecter en ssh à l'hôte rouge, nous pouvons créer un tunnel ssh de transfert de port local pour accéder à ce port.

La commande sur l'hôte bleu sera :

ssh -L 8080:192.168.0.2:80 [email protected]

Maintenant, lorsque l'hôte bleu ouvre un navigateur et accède à http://localhost:8080 ils pourront voir tout ce que le serveur rouge a au port 80.

Syntaxe de transfert de port local

Cette syntaxe pour créer un tunnel de redirection de port ssh local est la suivante :

ssh -L <LPORT>:<RHOST>:<RPORT> <GATEWAY>

Tunnel SSH distant avec transfert 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 drone dans un réseau et que vous souhaitez qu'il "téléphone à la maison". Ensuite, lorsqu'il téléphone à la maison, vous pouvez vous y connecter via 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. Parce que 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 veut revenir en ssh à l'hôte bleu, il peut emprunter ce tunnel précédemment établi.

L'hôte bleu initie un tunnel ssh comme ceci :

ssh -R 2222:localhost:22 [email protected]

Cela ouvre le port 2222 sur l'hôte vert, qui le redirige ensuite vers le port 22 sur l'hôte bleu. Donc, si l'hôte vert devait se connecter en ssh sur le port 2222, il atteindrait alors l'hôte bleu.

L'hôte vert peut maintenant se connecter en ssh à l'hôte bleu comme ceci :

ssh -p 2222 [email protected]

Utilisation de l'option -N

Lorsque vous utilisez ssh, vous pouvez spécifier le -N drapeau qui indique à ssh que vous n'avez pas besoin d'envoyer de commandes via la connexion ssh lorsqu'elle est établie. Cette option est souvent utilisée lors de la création de tunnels, car nous n'avons souvent pas besoin d'obtenir une invite.

Autossh

Le autossh La commande est utilisée pour ajouter de la persistance à vos tunnels. Son travail consiste à vérifier que votre connexion ssh est active et, si ce n'est pas le cas, à la créer.

Voici une commande autossh que vous reconnaîtrez peut-être.

autossh -N -i /home/blueuser/.ssh/id_rsa -R 2222:localhost:22 [email protected]

Le -i /home/blueuser/.ssh/id_rsa l'option indique d'utiliser un certificat pour authentifier cette connexion ssh.

Désormais, lorsque votre tunnel tombe en panne, il essaie automatiquement de se reconnecter et continue d'essayer jusqu'à ce qu'il réussisse. Pour le rendre persistant lors d'un redémarrage, ajoutez la commande ssh en tant que tâche cron.


Linux
  1. Comment utiliser les protocoles SSH et SFTP sur votre réseau domestique

  2. Comment puis-je utiliser SSH avec un proxy SOCKS 5 ?

  3. Comment savoir si une connexion ssh ControlMaster est en cours d'utilisation

  4. Utiliser scp pour copier un fichier sur différents serveurs

  5. Comment scp via une machine intermédiaire ?

Fichier hôte Linux :comment le modifier et l'utiliser ?

Comment utiliser SSH pour se connecter à un serveur distant

Comment utiliser une clé SSH avec des utilisateurs non root

Ssh – Comment fonctionne le tunneling Ssh inversé ?

Comment utiliser Secure Shell Access (SSH) via PuTTY ?

Comment désactiver la vérification de la clé d'hôte SSH sous Linux