J'ai des problèmes avec l'utilisation d' ssh
un serveur distant (auquel je n'ai pas accès administrateur) - Plus précisément, il y a quelques dossiers avec du texte coréen et cyrillique.
Lorsque j'affiche le contenu du dossier parent avec ls
, les caractères sont échappés par "?". Il est peut-être intéressant de noter que les caractères coréens semblent s'échapper beaucoup plus que le nombre de caractères qui devraient y être.
Je sais que le programme terminal que j'utilise peut afficher les caractères, car l'utilisation les sftp
affiche parfaitement. Le problème se produit sur tous les terminaux que j'ai essayés.
Résumé des machines
Machine locale:
- Linux 2.6.32-5-686, i686
- Debian GNU / Linux 6.0.2 (compression)
- Avoir un accès administrateur
Serveur distant:
- Linux 2.6.32-bpo.5-amd64, x86_64
- Debian GNU / Linux 5.0.8 (lenny)
- Pas d'accès administrateur, ni physique
J'ai probablement manqué une autre statistique vitale ou un peu d'information, auquel cas je m'excuse. Je suis assez nouveau pour tout le côté non Windows de l'informatique, donc je sais à peine ce que je fais ici.
la source
locale
etlocale -a
, à la fois localement et à distance, s'il vous plaîtRéponses:
Vos informations locales ne sont pas configurées correctement sur la machine serveur. Plus précisément, la
LC_CTYPE
variable, qui indique l'encodage des caractères sur le terminal, n'est pas définie correctement (ou, je suppose, pas du tout).Dans votre terminal local, exécutez
locale
pour voir vos paramètres régionaux. Vous verrez probablement (entre autres lignes) quelque chose commeLC_CTYPE=en_US.UTF-8
; ce qui importe ici, c'est la.UTF-8
partie indiquant le codage UTF-8 . Il s'agit du codage standard de facto pour le texte multilingue dans le monde Unix (et au-delà).Vous devez transmettre ces informations au serveur. La meilleure façon, si cela fonctionne, est d'envoyer des informations locales via la connexion ssh. Pour cela, ajoutez les lignes suivantes à la fin de
~/.ssh/config
:Cela nécessite qu'une
AcceptEnv
directive appropriée soit présente dans la configuration du serveur (/etc/ssh/sshd_config
) (c'est par défaut sur Debian).Si cela ne fonctionne pas et que vous vous connectez toujours au serveur à partir d'un terminal UTF-8, ajoutez la ligne
export LC_CTYPE=en_US.UTF-8
à votre~/.bashrc
sur le serveur (~/.zshrc
ou tout autre fichier utilisé par votre shell). Le nom des paramètres régionaux (par exempleen_US.UTF-8
) doit être l'un de ceux proposés parlocale -a
, et doit avoir.UTF-8
(.utf8
ou une variation triviale).la source
locale
sorties correspondent). Cependant, àlocale -a
distance n'a donné que en_GB.utf8 et en_US.utf8. Merci!locale charmap
/etc/ssh/ssh_config
requis également l'envoiLANG
(SendEnv LANG LC_*
)export LC_CTYPE=en_US.UTF-8
à mon~/.profile
côté serveur. L'ajouter à~/.bashrc
semble n'avoir aucun effet.