Le service SSH ne démarre pas si son fichier de configuration (/etc/ssh/sshd_config) contient des erreurs. Ce guide vous aide à identifier l'erreur précise, à la corriger et à redémarrer le service.
Causes
Les erreurs présentes dans /etc/ssh/sshd_config se répartissent en deux catégories :
Erreur de syntaxe : une option de configuration est mal orthographiée ou sa valeur se situe en dehors de la plage autorisée ou d'une liste prédéfinie (par exemple, on/off, true/false ou une plage numérique spécifique).
Erreur d'encodage du fichier : le fichier contient une marque d'ordre des octets (BOM) ou utilise des fins de ligne CRLF. Cela se produit généralement lorsque le fichier a été modifié ou transféré depuis un système Windows.
Solution 1 : Corriger les erreurs dans le fichier de configuration SSH
Étape 1 : Se connecter à l'instance via VNC
Étant donné que SSH est indisponible, utilisez une connexion VNC pour accéder à l'instance.
Accédez à ECS console - Instance. Dans la barre de navigation supérieure, sélectionnez la région cible et le groupe de ressources.
Sur la page des détails de l'instance, cliquez sur Connect. Dans la boîte de dialogue de connexion à distance, cliquez sur Show Other Logon Methods pour afficher l'option VNC, puis cliquez sur Sign in now à côté de VNC. Saisissez le nom d'utilisateur et le mot de passe pour vous connecter à l'instance.
Étape 2 : Diagnostiquer la configuration
Exécutez la commande de test de configuration SSH :
sudo /usr/sbin/sshd -t
La sortie identifie le fichier, le numéro de ligne et le type d'erreur. Par exemple :
Option de configuration obsolète
/etc/ssh/sshd_config: line 82: Bad configuration option: RSAAuthentication
Valeur invalide pour une option de configuration
/etc/ssh/sshd_config: line 23: bad value for Port "222222"
Le format exact du message d'erreur varie selon la version d'OpenSSH. Par exemple, OpenSSH 8.0p1 afficheDeprecated option RSAAuthenticationau lieu deBad configuration option: RSAAuthentication.
Si la commande ne renvoie aucune sortie, la configuration est correcte. Passez directement à Étape 5 .
Étape 3 : Corriger le fichier de configuration
Ouvrez le fichier de configuration :
sudo vim /etc/ssh/sshd_config
Accédez au numéro de ligne indiqué dans le message d'erreur et appliquez la correction appropriée :
Options de configuration obsolètes
OpenSSH supprime la prise en charge des anciennes options dans les versions plus récentes. Commentez ou supprimez la ligne contenant l'option obsolète.
| Option obsolète | Obsolète depuis |
|---|---|
RSAAuthentication |
OpenSSH 7.0 et versions ultérieures |
UsePrivilegeSeparation |
OpenSSH 7.5 et versions ultérieures (désormais comportement par défaut) |
Valeurs d'options invalides
Corrigez la valeur sur la ligne signalée. Exécutez man sshd_config pour connaître les valeurs valides.
Erreurs d'encodage de fichier
Un fichier de configuration modifié ou copié depuis un système Windows peut contenir une BOM ou utiliser des fins de ligne CRLF. Vérifiez et corrigez ces éléments dans Vim :
Vérifier les fins de ligne :
:set fileformat?
Si la sortie est fileformat=dos, le fichier utilise des fins de ligne CRLF. Corrigez-le :
:set fileformat=unix
Vérifier la présence d'une BOM :
:set bomb?
Si la sortie est bomb, le fichier contient une BOM. Corrigez-le :
:set nobomb
Enregistrez le fichier après avoir effectué les modifications (:wq).
Les versions plus récentes d'OpenSSH (telles que 8,0p1) peuvent tolérer les fins de ligne CRLF sans empêcher le démarrage. Toutefois, il est toujours recommandé de convertir au format Unix pour éviter les problèmes avec d'autres outils et les anciennes versions d'OpenSSH.
Si le fichier de configuration est gravement corrompu et que vous ne pouvez pas identifier les erreurs individuelles, passez à Solution 2 : Réinstaller le service SSH .
Étape 4 : Valider la correction
Exécutez à nouveau le test de configuration :
sudo /usr/sbin/sshd -t
L'absence de sortie signifie que la configuration est correcte.
Étape 5 : Redémarrer et vérifier le service SSH
Redémarrez le service :
sudo systemctl restart sshd
Vérifiez l'état du service :
sudo systemctl status sshd
Si la sortie inclut active (running), le service SSH a démarré avec succès.
Solution 2 : Réinstaller le service SSH
Si le fichier de configuration est trop corrompu pour être réparé, réinstallez le service SSH. Cette opération remplace le fichier de configuration par une version par défaut propre.
La réinstallation supprime toutes les configurations personnalisées, telles que les ports modifiés et les paramètres d'authentification par clé. Sauvegardez le fichier avant de continuer.
Étape 1 : Se connecter à l'instance via VNC
Accédez à ECS console - Instance. Dans la barre de navigation supérieure, sélectionnez la région cible et le groupe de ressources.
Sur la page des détails de l'instance, cliquez sur Connect. Dans la boîte de dialogue de connexion à distance, cliquez sur Show Other Logon Methods pour afficher l'option VNC, puis cliquez sur Sign in now à côté de VNC. Saisissez le nom d'utilisateur et le mot de passe pour vous connecter à l'instance.
Étape 2 : Sauvegarder le fichier de configuration
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup-$(date +%Y%m%d-%H%M%S)
Étape 3 : Désinstaller et réinstaller le service SSH
Désinstallation :
sudo rpm -e openssh-server
Réinstallation :
sudo yum install openssh-server
Après l'installation, migrez vos configurations personnalisées depuis le fichier de sauvegarde vers le nouveau /etc/ssh/sshd_config.
Étape 4 : Démarrer et vérifier le service SSH
Démarrez le service :
sudo systemctl start sshd
Vérifiez l'état du service :
sudo systemctl status sshd
Si la sortie inclut active (running), le service SSH a démarré avec succès.