SSH – SECURE SHELL

I► SECURE SHELL

SSH permet d’établir un canal de communication entre un client (openssh-client) et un serveur (openssh-server) dans lequel les données échangées sont encryptées selon différents algorithmes.

? Comment fonctionne SSH ? Comment sont encryptées les données ?

SSH peut utiliser l’algorithme de chiffrement RSA : RSA est un algorithme de chiffrement asymétrique utilisé principalement dans le commerce électronique avec une paire de clé dite Privée et Publique.
La clé privée reste toujours sur le poste client. La clé publique est à partager avec les serveurs auxquels on souhaite accéder par SSH et transite sur le réseau..

Lors de la connexion, le serveur chiffre les données avec la clé publique et seule la clé privée présente sur la machine cliente peut décoder le message …

Exemple : ssh tux@192.168.0.10 permet de se connecter en tant que tux sur la machine distante dont l’@IP est 192.168.0.10

Pour installer : apt-get install openssh-client et openssh-server.
Le répertoire /etc/ssh/ est créé, il comporte le fichier de configuration sshd_config dans lequel on peut gérer les directives du serveur ssh ainsi que les clés privées et publiques d’encryptage de données DSA. [ ssh_host_rsa_key et ssh_host_rsa_key.pub ].

? Comment se connecter en SSH sans mot de passe ?

1- Générons la paire de clé privée et publique :
ssh-keygen -t rsa
Une passPhrase est demandée, elle permettra d’avoir un seul mot de passe pour toutes les connexions SSH sur tous les serveurs ( on peut la laisser vide et dans ce cas là, il n’y aura pas de mot de passe …)

Capture

On va maintenant copier la clé publique sur le serveur ssh distant dans le répertoire /root/.ssh/authorized_keys :

Capture-1

? Attention id_rsa.pub est un fichier et devient le fichier authorized_keys sur le serveur !!!

Le mot de passe est bien évidemment demandé la première fois pour établir une connexion avec root.
On peut désormais établir une connexion en saisissant : ssh root@192.168.2.6
Aucun mot de passe n’est requis car le passphrase est resté blanc.

On peut donc déployer cette clé publique sur tous les serveurs SSH et ne pas avoir à saisir de mot de passe ou utiliser le même passphrase !

? Comment créer un tunnel SSH ?

Un tunnel SSH permet d’établir un canal de connexion dans lequel les données échangées avec des services WEB (HTTP, MAIL, FTP) seront chiffrées par les différents algorithme d’encryptage.

Il existe plusieurs approches pour créer un tunnel SSH :

  • Remote : pour rediriger un port local vers une machine distante
  • Locale : pour rediriger un port distant vers une machine locale

Exemple : ssh -L 2080:localhost:80 root@192.168.2.6
Crée un tunnel en redirigeant le port 80 distant vers le port local 2080, donc le protocole HTTP

Dans le navigateur on saisit l’URL : http://localhost:2080 et cette requête nous amènera vers le port 80 du serveur web distant … Les données échangées sont chiffrées !

? Comment monter un FS remote  en SSH  sur sa machine locale ? 

sshfs root@192.168.10.1:/home/ /tmp/local/
On monte le répertoire distant /home/ sur la machine 192.168.10.1 sur le répertoire local /tmp/local/

Pour le démonter : fusermount -u /tmp/local/

Michel BOCCIOLESI