SSH: Secure SHell
J’expose ici le protocole SSH (Secure SHell). Je décris les principales commandes de ce protocole, ainsi que la mise en oeuvre de paire de clés privée/publique pour s’authentifier. J’aborderai dans un premier temps la partie client (votre machine) et ensuite la partie serveur (machine distante). Je suppose que le serveur (machine distante) dispose de sshd (serveur ssh).
SSH c’est quoi ?
SSH est un shell sécurisé(Secure SHell) qui vous permet de vous connectez à une machine distante à travers le réseau, cela peut être une machine de votre réseau local mais également une machine située à Londres, Madrid ou New York! En outre, il vous permet de lancer des applications sur la machine distante. Vous pouvez également effectuer des transferts de votre machine locale sur le serveur et inversement tout cela de manière sécurisée. SSH permet d’établir un canal de communication sécurisé et de s’authentifier de manière forte (mise en place de paire de clés) sur le serveur distant.
Pourquoi utiliser SSH ?
Les commandes traditionnelles comme rcp, rlogin, telnet sont vulnérables, il est assez aisé par exemple au sein d’un réseau local de trouver les logins et mot de passe qui circulent. Il faut savoir que les logins et les mots de passe sont envoyés en clair sur votre réseau, il suffit alors pour quelqu’un de mal intentionné d’écouter vos ports et d’analyser les paquets circulant. Essayer l’utilitaire EtherReal, c’est assez déroutant … SSH est beaucoup plus sécurisé, les données sont cryptées donc bon courage aux gens malintentionnées… Quoique faites attention quand même !!! Votre mot de passe est crypté lors de la connexion et les données circulant entre le serveur et le client le sont également.
Quelques notations
La machine locale s’appellera ipowerht d’IP 10.0.0.3. Le serveur distant s’appellera ipower d’IP 10.0.0.4. mon login (identifiant de connexion) sera nadir.
SSH coté client
Pour vous connectez à un serveur ssh, on utilise la commande suivant:
ssh login@serveur_distant
Je vous rappelle que nous sommes coté client mon ip est 10.0.0.3 et la machine c’est ipowerht, on peut vérifier:
On se connecte et mettez yes !
Nous somme à présent connecté sur le serveur distant ipower d’ip 10.0.0.4.
Quelques explications. Vous êtes obligé de répondre yes pour vous connecter. Vous autorisez à ce moment là l’enregistrement d’une clé publique dans un fichier known_hosts situé dans le répertoire .ssh de votre répertoire personnel.
SSH coté client: transfert de fichiers par scp
Pour transférer des fichiers de manière sécurisée, on utilise la commande scp comme suit
scp source destination
s’il s’agit de répertoire on utilise -r
scp -r source destination
lorqu’il s’agit de la machine cliente, on utilise la notation classique des répertoires, s’il sagit du serveur distant on utilise login@serveur_distant:(Ne mettez pas d’espace après:). Regardons quelques exemples: je copie du client vers le serveur un fichier
Ici je copie un répertoire (-r) du serveur vers la machine locale:
SSH coté client: transfert de fichiers par sftp
Au lieu d’utiliser le ftp classique c’est la commande sftp qu’il faut utiliser, ne râlez pas si on découvre votre mot passe alors que vous utilisez le ftp classique. La syntaxe est la suivante:
sftp login@serveur_distant
En pratique:
SSH coté client: Authentification par clé
Nous avons vu précédemment que l’authentification sur le serveur se faisait via un login et un mot de passe. Nous allons voir à présent que l’authentification peut se faire grâce à la cryptographie asymétrique et et une paire de clés privée/publique.
L’authentification forte c’est quoi au juste?
- c’est d’abord un cryptage de type RSA/DSA
- chaque utilisateur (user) possède deux clés l’une publique l’autre privée
- pour s’authentifier la partie privée doit être située sur le client et la partie publique sur le serveur.
- au lieu d’introduire votre login et votre mot de passe vous n’aurez plus qu’à introduire une passphrase, c’est un mot de passe qui autorise des phrases, NE LAISSEZ JAMAIS LA PASSPHRASE VIDE!!!, c’est un ordre ! évidemment si quelqu’un pique votre clé publique vous êtes mal puisque vous n’avez pas mis de passphrase.
Pour générer une paire de clés on utilise
ssh-keygen -t rsa
Vous avez le choix entre dsa, rsa et rsa1. Regardons un exemple avec le cryptage dsa comment générer les clés publique et privée. Par défaut tapez entrée pour le nom des fichiers, mais pas pour la passphrase, je le répète: NE LAISSEZ JAMAIS LA PASSPHRASE VIDE!!!
Dans le répertoire de l’utilisateur, on retrouve donc le répertoire .ssh qui contient les clé publique id_dsa.pub et privée id_dsa. Notez l’importance des droits de la clé privée id_dsa
-rw——- 1 nadir nadir 736 2005-11-01 20:28 id_dsa
Elle est du type 600, c’est à dire rw pour l’utilisateur et les autres n’ont aucun droit. Pourquoi ? Tout simplement parce que les autres ne doivent pas lire votre clé privée …
Transfért de la clé publique sur les serveur distant
il faut à présent transférer la clé publique sur le serveur distant. On utilise la commande suivante
ssh-copy-id -i chemin_de_la_clé_publique login@serveur_distant
En pratique cela donne:
Alors là vous avez un message vous indiquant que vous devez essayer de vous connecter sur le serveur distant et de vérifier le fichier .ssh/authorized_keys. Comme on n’a pas la flemme on essaye, il faut évidemment entrer la passphrase:
Vous pouvez vérifier que c’est bien la bonne clé:
Rien à dire c’est la même! A chaque connexion sur la machine distante, ssh vous demandera la passphrase qui a servi à crypter la clé privée:
SSH coté serveur
La configuration du serveur ssh se fait à travers le fichier /etc/ssh/sshd_config. Ce fichier gère le paramètrage des connexions sur le serveur, toute modification de ce fichier nécessite un redémarrage du démon sshd comme suit
Notez que le redémarrage empêche la déconnexion des utilisateurs du serveur ssh, contrairement à l’arrêt
Pour le paramétrage de ce fichier de configuration, je vous invite vivement à lire la documentation
Si vous avez trouvé cet article ou ce site utile et souhaitez soutenir notre travail, veuillez envisager de faire un don. Merci !
Aidez-nous