Problème de locale sous ssh ?

Si la langue / configuration du clavier que vous utilisez en local (votre propre PC) n’est pas installé sur le serveur auquel vous vous connectez en SSH, vous allez rencontrez des messages d’erreurs de ce genre :

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_PAPER = "fr_CA.UTF-8",
	LC_ADDRESS = "fr_CA.UTF-8",
	LC_MONETARY = "fr_CA.UTF-8",
	LC_NUMERIC = "fr_CA.UTF-8",
	LC_TELEPHONE = "fr_CA.UTF-8",
	LC_IDENTIFICATION = "fr_CA.UTF-8",
	LC_MEASUREMENT = "fr_CA.UTF-8",
	LC_TIME = "fr_CA.UTF-8",
	LC_NAME = "fr_CA.UTF-8",
	LANG = "en_GB.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory

Dans cet exemple de message d’erreur, mon PC sous Ubuntu est configuré avec un clavier « Français Canada ».

Lors d’une connexion ssh, le client spécifie au serveur qu’il doit lui aussi se configurer pour « Français Canada » … mais le serveur ne connaît pas la configuration correspondante.

Voici la solution : il faut installer la locale « fr_CA.UTF-8 » sur le serveur.

dpkg-reconfigre locales

Une fenêtre vous propose alors de choisir les langues additionnelles à installer : il suffit de choisir la langue correspondant au message d’erreur ci-dessus, dans mon cas, il faut que je choisisse « fr_CA.UTF-8 ».

Si cette première méthode ne fonctionne pas (ex: la reconfiguration ne vous propose pas d’installer une nouvelle locale), vous pouvez aussi exécuter la commande suivante :

locale-gen fr_CA.UTF-8