Qu'est-ce que le SSH ?
SSH, ou Secure Shell, est un protocole de communication sécurisé conçu pour accéder à des machines distantes via un réseau. Il établit une connexion chiffrée entre un client et un serveur, offrant ainsi une sécurité renforcée pour la transmission de données sensibles.
Quels sont les avantages du SSH ?
Transfert de fichiers sécurisé : SSH facilite le transfert sécurisé de fichiers entre un client et un serveur grâce à des commandes comme SCP (Secure Copy Protocol) et SFTP (SSH File Transfer Protocol).
Tunnels sécurisés : SSH permet la création de tunnels chiffrés pour acheminer d’autres protocoles (tels que le trafic HTTP) de manière sécurisée à travers une connexion SSH.
Administration à distance : SSH facilite la gestion à distance d’un serveur, permettant aux administrateurs système d’effectuer des tâches administratives sans être physiquement présents sur le serveur.
Comment générer une clé SSH ?
Pour générer une paire de clés SSH publique/privée, vous pouvez utiliser la commande suivante :
ssh-keygen \
-m PEM \
-t rsa \
-b 4096 \
-C "your_email@example.com" \
-N mypassphrase
-m PEM
: Formate la clé au format PEM.-t rsa
: Spécifie le type de clé à créer, ici RSA.-b 4096
: Définit le nombre de bits dans la clé, ici 4096.-C "your_email@example.com"
: Ajoute un commentaire à la fin du fichier de la clé publique pour faciliter son identification.-N mypassphrase
: Définit une phrase secrète supplémentaire pour accéder au fichier de la clé privée.
Pour ajouter la nouvelle clé SSH à l’agent SSH, utilisez la commande suivante :
ssh-add chemin_vers_la_clé_privée
# Par exemple : ssh-add ~/.ssh/id_rsa
L’agent SSH est un programme qui conserve les clés privées. Il gère l’authentification pour vous, évitant ainsi la saisie de mots de passe dans le terminal. Si votre clé RSA privée n’est pas chiffrée avec une phrase secrète, alors l’agent SSH n’est pas nécessaire.
Quel est le rôle du fichier authorized_keys ?
Processus de vérification de l'authenticité de l'hôte distant avec SSH
La vérification de l’authenticité de l’hôte distant est une mesure de sécurité mise en œuvre par SSH pour garantir que vous vous connectez bien au serveur souhaité, et non à un serveur malveillant.
Comment fonctionne ce mécanisme ?
Première connexion : Lorsque vous vous connectez pour la première fois à un serveur via SSH, le serveur envoie sa clé publique à votre client SSH. Votre client SSH vous demande alors de confirmer que vous faites confiance à cette clé publique en affichant un message similaire à celui-ci :
The authenticity of host 'example.com (192.168.0.1)' can't be established.
ECDSA key fingerprint is SHA256:abc123.
Are you sure you want to continue connecting (yes/no)?
Si vous répondez “yes”, la clé publique du serveur est ajoutée à votre fichier ~/.ssh/known_hosts
.
Connexions ultérieures : Lors des connexions suivantes, votre client SSH compare la clé publique du serveur avec celle stockée dans ~/.ssh/known_hosts
. Si elles correspondent, la connexion se poursuit sans interruption. Si elles ne correspondent pas, vous recevez un avertissement indiquant que la clé de l’hôte a changé, ce qui pourrait indiquer une attaque de type “man-in-the-middle”.
Pourquoi est-ce important ?
- Sécurité : Cela empêche les attaques de type “man-in-the-middle”, où un attaquant pourrait intercepter et rediriger votre connexion SSH vers un serveur malveillant.
- Intégrité : Vous pouvez être sûr que vous vous connectez toujours au bon serveur.
Dans certains cas, comme lors de déploiements automatisés, il peut être nécessaire de désactiver cette vérification stricte pour éviter les interruptions. C’est ce que fait la commande StrictHostKeyChecking no
. Toutefois, cette option réduit le niveau de sécurité et doit être utilisée avec précaution.