Tengo algunos problemas con el uso ssh
y un servidor remoto (al que no tengo acceso de administrador). Específicamente, hay un par de carpetas con texto en coreano y cirílico.
Cuando visualizo el contenido de la carpeta principal con ls
, los caracteres se escapan como "?". Quizás sea de notar que los caracteres coreanos parecen escapar mucho más que la cantidad de caracteres que deberían estar allí.
Sé que el programa de terminal que estoy usando puede mostrar los caracteres, ya que usarlos los sftp
muestra perfectamente. El problema ocurre en todos los terminales que he probado.
Resumen de maquinas
Máquina local:
- Linux 2.6.32-5-686, i686
- Debian GNU / Linux 6.0.2 (compresión)
- Tener acceso de administrador
Servidor remoto:
- Linux 2.6.32-bpo.5-amd64, x86_64
- Debian GNU / Linux 5.0.8 (lenny)
- No tengo acceso de administrador, ni físico
Probablemente me haya perdido alguna otra estadística vital o un poco de información, en cuyo caso me disculpo. Soy bastante nuevo en todo el lado de la informática que no es Windows, por lo que apenas sé lo que estoy haciendo aquí.
fuente
locale
ylocale -a
, tanto local como remotamente, por favorRespuestas:
Su información local no está configurada correctamente en la máquina del servidor. Específicamente, la
LC_CTYPE
variable, que indica la codificación de caracteres en el terminal, no está configurada correctamente (o, sospecho, en absoluto).En su terminal local, ejecute
locale
para ver su configuración regional. Probablemente verá (entre otras líneas) algo así comoLC_CTYPE=en_US.UTF-8
; Lo que importa aquí es la.UTF-8
parte, que indica la codificación UTF-8 . Esta es la codificación estándar de facto para texto multilingüe en el mundo de Unix (y más allá).Necesita pasar esta información al servidor. La mejor manera, si funciona, es enviar información local a través de la conexión ssh. Para esto, agregue las siguientes líneas al final de
~/.ssh/config
:Esto requiere que una
AcceptEnv
directiva adecuada esté presente en la configuración del servidor (/etc/ssh/sshd_config
) (por defecto está en Debian).Si eso no funciona, y siempre inicia sesión en el servidor desde un terminal UTF-8, agregue la línea
export LC_CTYPE=en_US.UTF-8
a su~/.bashrc
en el servidor (~/.zshrc
o cualquier archivo que utilice su shell). El nombre del entorno local (pen_US.UTF-8
. Ej. ) Debe ser uno de los ofrecidos porlocale -a
y debe tener.UTF-8
(.utf8
o alguna variación trivial).fuente
locale
salidas coinciden). Sin embargo, delocale -a
forma remota solo proporcionó en_GB.utf8 y en_US.utf8. ¡Gracias!locale charmap
/etc/ssh/ssh_config
requerido también enviandoLANG
(SendEnv LANG LC_*
)export LC_CTYPE=en_US.UTF-8
a mi~/.profile
en el lado del servidor. Agregarlo a~/.bashrc
parecía no tener ningún efecto.