OpenSSH

Un protocole hautement sécurisé...

OpenSSH permet de se connecter à d'autres ordinateurs ou serveurs ayant le serveur OpenSSH installé (paquet openssh-server). Il permet d'effectuer toutes les tâches d'administration mais aussi de copier des fichiers, en outre, ce protocole fournit d'autres méthodes d'authentification alternatives au traditionnel mot de passe.

OpenSSH chiffre tout le trafic (mots de passe y compris), via une combinaison astucieuse de chiffrement symétrique et asymétrique.

Fonctionnement de SSH

Ce protocole utilise un chiffrement asymétrique, c'est à dire qu'il utilise une clé (mot de passe) pour chiffrer et une autre pour déchiffrer.

Il y a donc 2 clés :

  • une clé dite "publique" qui sert à chiffrer ;

  • une clé dit "privée" qui sert à déchiffrer.

Ces 2 clés sont générées ensemble par le système d'exploitation, elles vont de pair. La clé publique peut circuler en clair sur le réseau, ce n'est pas grave si un pirate l'intercepte.

Remarque

L'algorithme de chiffrement asymétrique le plus connu s'appelle RSA (initiales des 3 inventeurs). Plus d'infos sur Wikipédia : https://fr.wikipedia.org/wiki/Chiffrement_RSA

SimulationLa création d'un tunnel sécurisé avec SSH

En images, OpenClassRooms nous montre le déroulé des échanges pour la création d'un tunnel sécurisé SSH : https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/41773-la-connexion-securisee-a-distance-avec-ssh#/id/r-2282833

Échange sécurisé établi !

Utilisation de SSH

Pour se connecter à un serveur SSH, il faut utiliser le terminal (putty sur Windows©) ou monter un dossier distant via Nautilus, car, OpenSSH permet également de faire du transfert de fichiers de manière sécurisée.

MéthodeSe connecter à un serveur SSH

Pour ouvrir une session à distance, nous utiliserons la commande suivante :

ssh <nom_utilisateur>@<adresse_ip_distant> -p <numero_port>

Le numéro du port (-p <numero_port>) est facultatif, le port par défaut étant le port 22.

MéthodeCopie sécurisée de fichiers

Pour copier un fichier à partir d'un ordinateur sur un autre avec SSH, vous devrez utiliser la commande scp (Secure CP) :

scp <fichier> <nom_utilisateur>@<adresse_ip_distant>:<dossier_destination>

Pour un dossier, il faudra utiliser l'argument -r de telle sorte :

scp -r Images/ toto@192.168.1.103:/home/toto/

Bien entendu, on peut aussi faire l'inverse, copie du distant vers son ordinateur (bien noter le . à la fin de la ligne) :

scp toto@192.168.1.103:/home/toto/liste_fichiers.log . 

On peut également en profiter pour renommer son fichier transféré :

scp toto@192.168.1.103:/home/toto/liste_fichiers.log fichiers.log

MéthodeUtilisation de Nautilus

Pour faciliter les copies de fichiers ou dossiers, on peut utiliser le gestionnaire de fichiers (Nautilus, Caja...) pour monter un dossier distant. Pour cela, on peut taper l'URL suivante dans le gestionnaire de fichiers (ou dans le menu Fichier -> Se connecter à un serveur...)

ssh://<nom_utilisateur>@<adresse_ip_distant>

Un fois monté, on peut cliquer-droit sur le dossier dans la partie de gauche puis cliquer sur Ajouter un signet :

Ajout signet d'un dossier SSH

Authentification

Authentification par un système de clés publique / privée

Comme vu précédemment, on peut se connecter à un serveur SSH via un mot de passe, ce qui n'est pas forcément la méthode la plus sécurisée ou la plus simple. On peut donc mettre en place la connexion par clés publique et privée. On peut créer ces clés via l'application graphique 'Mots de passe et clés' :

Application Mots de Passe et Clés

Une fois créées, ces clés sont dans le dossier /home/nom_utilisateur/.ssh :

  • id_rsa est la clé privée, on remarquera que l'on ne peut pas l'ouvrir

  • id_rsa.pub est la clé publique, c'est cette clé que l'on peut mettre sur un serveur ou un autre ordinateur

  • config est un fichier de configuration qui permet de simplifier nos connexions SSH futures

  • known_hosts est un fichier qui liste l'ensemble des serveurs sur lesquels vous vous êtes déjà connectés (en mode haché)

MéthodeDéposer sa clé publique

Pour déposer sa clé publique sur le serveur distant, il faudra utiliser la commande suivante :

ssh-copy-id <nom_utilisateur>@<adresse_ip_distant>

Une fois déposée, cette clé publique est déposée dans le fichier authorized keys contenu dans le dossier ~/.ssh/ de l'ordinateur distant.

ComplémentPour aller plus loin...

Le fichier config dans ~/.ssh permet une authentification plus rapide.

Par exemple, on se connecte à un NAS avec le compte toto et l'adresse IP 192.168.1.50, on peut donc définir ces lignes dans ce fichier :

Host		nas
Hostname	192.168.1.50
User		toto

Ainsi, pour se connecter au nas, on pourra faire simplement :

ssh nas

Si en plus notre clé publique est déjà déposée, alors, il ne restera plus qu'à saisir la passphrase associée à notre clé ! Et ceci, une seule fois par session.

Bien entendu, cette partie permet 90% des usages, si vous souhaitez en savoir plus sur OpenSSH, n'hésitez pas à consulter la page SSH sur la documentation Ubuntu-fr.org