Aller au contenu principal

SSH

Introduction

SSH, ou Secure Shell, est un protocole de communication sécurisé qui permet d'établir une connexion entre deux machines. Il est couramment utilisé pour se connecter à un serveur distant, mais il peut également être utilisé pour transférer des fichiers ou exécuter des commandes sur une machine distante.

Installation

SSH est généralement préinstallé sur les systèmes d'exploitation Linux et Unix. Si il ne l'est pas, exécutez les commandes suivantes:

sudo apt update
sudo apt install openssh-server

Sur Windows, il est possible de l'installer à l'aide d'un logiciel tiers, tel que PuTTY.

Génération des clés SSH

Pour générer des clés SSH, il suffit d'exécuter la commande suivante sur votre machine locale :

ssh-keygen -t rsa -b 4096

ou

ssh-keygen -t ed25519

Cette commande va créer deux clés dans le dossier .ssh à la racine de votre profile, une clé privé et une clé publique. Elle vous demandera de saisir un nom de fichier pour vos clés, le nom par défaut est id_rsa ou id_ed25519. Il vous demandera également une passphrase pour sécuriser votre clé privée.

Une fois que vous avez généré vos clés SSH, vous devez copier le contenu de votre clé publique nommée par défaut id_rsa.pub ou id_ed25519.pub sur le serveur distant auquel vous souhaitez vous connecter. Vous pouvez le faire à l'aide de la commande suivante :

ssh-copy-id [utilisateur]@[adresse IP du serveur]

Cette commande va copier le contenu de votre clé publique dans le fichier .ssh/authorized_keys de votre profile serveur.

!!! Il ne faut jamais partager sa clé privée !!!

Connexion à un serveur avec SSH

Pour vous connecter à un serveur avec SSH, il suffit d'exécuter la commande suivante sur votre machine locale :

ssh [utilisateur]@[adresse IP du serveur]

A la première connexion, vous devez valider celle-ci avec YES puis vous serez invité à saisir votre passphrase de clé SSH.

Si vous devez générer une nouvelle paire de clés suite à la perte de votre passphrase par exemple, il faudra supprimer ou renommer le fichier .ssh/known_hosts avant de vous reconnecter au serveur. Si cela n'est pas fait, vous aurez un message "man-in-the-middle", car vous avez déjà enregistré une autre clé pour ce serveur.

Transfert de fichiers

Il est possible de transférer des fichiers entre une machine locale et un serveur distant à l'aide de SSH. Pour ce faire, vous pouvez utiliser la commande scp.

Pour copier un fichier de votre machine locale vers un serveur distant, exécutez la commande suivante :

scp [chemin du fichier local] [utilisateur]@[adresse IP du serveur]:[chemin du fichier distant]

Pour copier un fichier d'un serveur distant vers votre machine locale, exécutez la commande suivante :

scp [utilisateur]@[adresse IP du serveur]:[chemin du fichier distant] [chemin du fichier local]

Exécution de commandes

Il est possible d'exécuter des commandes sur un serveur distant à l'aide de SSH sans ouvrir la session. Pour ce faire, vous pouvez écrire votre commande entre guillemets.

Par exemple, pour exécuter la commande ls sur un serveur distant, exécutez la commande suivante :

ssh [utilisateur]@[adresse IP du serveur] 'ls'

Bonnes pratiques

Voici quelques bonnes pratiques à suivre lors de l'utilisation de SSH :

  • Générez des clés SSH avec une longueur de clé de 4096 bits ou plus.
  • Stockez vos clés SSH privées dans un endroit sûr.
  • Mettez à jour votre logiciel SSH régulièrement.

Conclusion

SSH est un outil puissant qui peut être utilisé pour se connecter à des serveurs distants, transférer des fichiers et exécuter des commandes. Il est important de suivre les bonnes pratiques pour garantir la sécurité de vos communications SSH.

Pour aller plus loin voici le manuel OpenSSH