SSH (Secure Shell) est un protocole qui nous permet d'accéder en toute sécurité à des ordinateurs distants, un peu comme Telnet, mais en utilisant des algorithmes de chiffrement qui nous aident à sécuriser notre connexion, notamment si nous voulons accéder à des ordinateurs qui remplissent une fonction importante au sein d'une organisation.
Généralement, pour accéder nous devons fournir notre nom d'utilisateur et l'adresse de l'ordinateur, afin que le serveur SSH nous demande le mot de passe d'accès:
ssh usuario@equiporemoto
A partir du moment où le client initie la première connexion entre l'ordinateur distant et nous, les informations voyagent déjà en toute sécurité, empêchant quelqu'un d'obtenir nos identifiants d'accès audit ordinateur, cependant SSH est un protocole très adaptable qui nous offre de nombreuses possibilités.
SCP
Le premier est de pouvoir transférer des fichiers entre le client et l'ordinateur distant, sans avoir besoin de monter un serveur FTP ou NFS, simplement en utilisant SCP (Secure CoPy) que la plupart des serveurs SSH implémentent:
scp archivo.tar.gz usuario@equiporemoto:/home/usuario
scp usuario@equiporemoto:/var/log/messages messages.txt
Tunnel SSH
Cette fonctionnalité est très utile, car elle nous permet d'envoyer et de recevoir des informations qui ne sont pas nécessairement des commandes shell entre le client et l'ordinateur distant, par exemple la navigation ordinaire. Si vous ne devinez pas ce que cela peut avoir, pensez à ce qui suit: vous devez accéder à une page, mais l'endroit où vous vous trouvez a un pare-feu implémenté qui bloque précisément cette page, par conséquent, nous pouvons faire du `` tunneling '' avec une télécommande ordinateur qui n'a pas lesdits verrous et parcourant ladite page via notre session SSH:
ssh -D 8888 usuario@equiporemoto
Une fois connecté, notre client SSH `` écoute '' sur le port 8888 en tant que serveur proxy, afin que nous puissions configurer notre navigateur et tout le trafic est transmis via la session SSH
Un autre exemple qui me vient à l'esprit est lorsque, en raison d'une restriction géographique, nous ne pouvons pas accéder à un service Web d'où nous sommes, lors de la création du tunnel, ledit service Web détecte l'IP de notre serveur distant comme source, pas notre IP client. C'est quelque peu équivalent aux VPN (Virtual Private Network)
SSH inversé
Si, pour une raison quelconque, nous devons accéder à un ordinateur qui se trouve derrière un pare-feu et que cela ne nous permet pas de rediriger le trafic SSH vers celui-ci, nous pouvons faire un `` SSH inversé '', de telle sorte que cet ordinateur se connecte à un autre serveur SSH, auquel nous pouvons également nous connecter, afin d'accéder à l'équipement derrière le pare-feu. Un exemple qui me vient à l'esprit est lorsque nous voulons aider un ami qui n'a aucune idée de comment configurer une redirection sur son modem, mais que nous devons accéder à son ordinateur à distance:
Ami -> Modem -> Serveur SSH <- À propos de nous
Les étapes à suivre sont relativement très simples:
Amigo
ssh -R 9999:localhost:22 usuario@servidorssh
À propos
ssh usuario@servidorssh
Une fois à l'intérieur du serveur SSH, nous pouvons nous connecter avec l'équipe de notre ami en utilisant
ssh amigo@localhost -p 9999
Comme vous pouvez le voir, toute la magie réside dans le paramètre -R, qui indique au serveur intermédiaire que sur le port 9999, l'ordinateur de notre ami écoute maintenant en tant que serveur.
Ce ne sont là que quelques possibilités que SSH nous offre, mais je vous invite à en expérimenter d'autres, par exemple; nous pouvons faire des scripts sans assistance en utilisant des clés RSA, rediriger des sessions X (mode graphique) vers notre environnement graphique, pour n'en citer que quelques-unes.