Se connecter en SSH et sécuriser l'accès
En PME, vous n'êtes pas forcément physiquement devant chaque serveur. SSH (Secure Shell) vous permet d'administrer un serveur Linux à distance depuis votre poste Windows ou Linux, de manière chiffrée et sécurisée. C'est l'outil n°1 de l'administrateur système.
Qu'est-ce que SSH ?
SSH est un protocole de connexion sécurisée à distance. Contrairement à Telnet (obsolète et non chiffré), SSH chiffre tout le trafic entre votre machine et le serveur. Par défaut sur le port 22.
Depuis Windows, vous pouvez utiliser :
- Le client SSH intégré à Windows 10/11 (terminal PowerShell ou CMD)
- PuTTY (outil graphique)
- Windows Terminal
Connexion de base
# Syntaxe : ssh utilisateur@serveur
ssh alice@192.168.1.10
ssh alice@srv-glpi.entreprise.local
ssh alice@srv-glpi -p 2222 # port non standard
# Première connexion : vérifier l'empreinte du serveur
# The authenticity of host '192.168.1.10' can't be established.
# ED25519 key fingerprint is SHA256:AbCdEf...
# Are you sure you want to continue connecting (yes/no)?
La première connexion affiche l'empreinte du serveur : vérifiez-la avec l'admin du serveur avant de taper "yes". Cette empreinte est ensuite stockée dans ~/.ssh/known_hosts.
Exécuter une commande sans ouvrir de session
# Exécuter une commande distante et récupérer le résultat
ssh alice@srv-glpi "df -h"
ssh alice@srv-glpi "systemctl status apache2"
ssh alice@srv-glpi "tail -50 /var/log/glpi/php-errors.log"
Très utile dans des scripts d'automatisation.
scp : copier des fichiers via SSH
# Copier un fichier local vers le serveur
scp rapport.pdf alice@srv-glpi:/home/alice/
# Copier un fichier du serveur vers local
scp alice@srv-glpi:/etc/glpi/config_db.php /tmp/
# Copier un dossier entier (-r)
scp -r /opt/scripts/ alice@srv-glpi:/opt/scripts/
# Spécifier un port non standard
scp -P 2222 fichier.txt alice@srv-glpi:/tmp/
Le handshake SSH : comment ça marche
sequenceDiagram participant C as Client (votre PC) participant S as Serveur SSH C->>S: Connexion TCP port 22 S-->>C: Bannière + clé publique du serveur C->>C: Vérifie l'empreinte (known_hosts) C->>S: Échange de clés (DH) : établit session chiffrée Note over C,S: Tout ce qui suit est chiffré S->>C: Demande d'authentification C->>S: Mot de passe (ou clé privée) S-->>C: Authentification OK → shell ouvert
Sécuriser le serveur SSH (/etc/ssh/sshd_config)
# Afficher la config actuelle
sudo grep -v "^#" /etc/ssh/sshd_config | grep -v "^$"
# Paramètres de sécurité recommandés
Port 22 # Changer pour obscurcir (ex: 2222)
PermitRootLogin no # Ne jamais laisser root se connecter en SSH
PasswordAuthentication no # Désactiver les mots de passe (utiliser les clés)
AllowUsers alice jean-tech # Whitelist des utilisateurs autorisés
MaxAuthTries 3 # Limiter les tentatives
Après modification, recharger :
sudo systemctl reload sshd
Cas concret
Un technicien de permanence doit redémarrer Apache sur le serveur GLPI depuis son domicile :
# 1. Connexion SSH depuis Windows (PowerShell)
ssh jean-tech@10.0.0.5 -p 22
# 2. Vérifier l'état d'Apache
systemctl status apache2
# 3. Redémarrer le service
sudo systemctl restart apache2
# 4. Vérifier que GLPI répond
curl -s -o /dev/null -w "%{http_code}" http://localhost/glpi/
# 200 = OK
# 5. Déconnexion
exit
Erreurs fréquentes
- Ignorer la vérification de l'empreinte à la première connexion : si un attaquant intercepte la connexion (man-in-the-middle), vous validerez son certificat. Vérifiez toujours l'empreinte avec l'admin.
- Laisser
PermitRootLogin yessur un serveur exposé à Internet : les bots testent root en permanence. - Confondre
scpetcp:scpnécessite le formatutilisateur@serveur:cheminpour la partie distante.
À retenir
- SSH = connexion distante chiffrée sur le port 22.
ssh user@ippour se connecter,scppour copier des fichiers.PermitRootLogin noest la règle de sécurité minimale côté serveur.
Mini-exercice
Si vous avez une VM Linux : connectez-vous en SSH depuis votre machine hôte avec ssh user@127.0.0.1 (ou l'IP de la VM). Exécutez uptime à distance avec ssh user@IP "uptime" sans ouvrir de session interactive.