Terminal Kitty et SSH : Résoudre l'erreur "xterm-kitty"
Cet article décrit la résolution d'une problématique courante rencontrée par les utilisateurs de l'émulateur Kitty sous GNU/Linux. Nous examinerons pourquoi des erreurs d'affichage apparaissent lors de connexions SSH vers des serveurs distants et comment déployer proprement la configuration nécessaire pour y remédier.
Le rôle de la variable $TERM
La variable d'environnement $TERM agit comme une carte d'identité pour votre terminal. Elle indique aux applications en ligne de commande (comme Nano, Vim ou Htop) comment interagir avec l'écran. Ces logiciels s'appuient sur cette valeur pour gérer les couleurs, formater le texte et positionner le curseur. Par défaut, l'émulateur Kitty s'identifie en attribuant la valeur xterm-kitty à cette variable.
Lors d'une connexion SSH, votre client transmet de force cette valeur locale au serveur distant. Le problème technique survient à la réception. Le système d'exploitation distant ne possède généralement pas la définition de ce terminal spécifique dans sa base de données terminfo. Le serveur ignore totalement comment interpréter les requêtes de formatage. Cette lacune bloque l'initialisation des interfaces interactives et déclenche le fameux message : Error opening terminal: xterm-kitty.
Résolution du problème : les deux approches
Méthode 1 : Utiliser le composant intégré Kitten (Recommandée)
Les développeurs de Kitty intègrent un outil natif pour pallier ce désagrément de manière intelligente. La commande kitten ssh vérifie la présence des fichiers de définition sur le serveur cible. S'ils sont absents, elle les copie automatiquement depuis votre ordinateur vers le répertoire caché ~/.terminfo de votre utilisateur distant avant de lancer la session.
Une fois cette opération initiale effectuée, la machine distante reconnaît votre terminal. Vous pouvez ensuite utiliser la simple commande ssh classique lors de vos futures connexions vers ce serveur.
# Utilisez le composant kitten au lieu de la commande ssh classique
kitty +kitten ssh utilisateur@adresse_du_serveur
Vous pouvez constater par vous-même la création de cette arborescence persistante sur le serveur distant en exécutant la commande suivante une fois connecté :
# Vérifie la présence des définitions compilées
ls -l ~/.terminfo/
Automatisation transparente via votre shell
L'outil est conçu pour ne transférer les données que si elles sont manquantes ou obsolètes. Vous pouvez donc sereinement remplacer la commande native en ajoutant cet alias dans le fichier de configuration de votre shell (~/.bashrc, ~/.zshrc, etc.) : alias ssh="kitty +kitten ssh". Son utilisation déploiera les définitions sur de nouveaux serveurs sans aucun impact sur la vitesse de connexion de vos machines déjà configurées.
Méthode 2 : Installer la définition sur le serveur cible
Si vous administrez le serveur distant et souhaitez régler le problème pour l'ensemble des utilisateurs du réseau (et pas uniquement pour votre compte), il est préférable d'installer la définition manquante de manière globale.
Connectez-vous à votre serveur en utilisant temporairement le composant kitten détaillé ci-dessus, puis installez le paquet système requis :
# Met à jour la liste des paquets
sudo apt update
# Installe la base de données terminfo spécifique pour Kitty
sudo apt install kitty-terminfo
Son installation garantit un affichage fonctionnel pour n'importe quel client se connectant avec la variable $TERM définie à xterm-kitty. Les couleurs du prompt, le formatage du texte et l'ensemble des applications interactives s'exécutent ainsi sans la moindre erreur.