Actualmente estoy usando Fedora 18 gnome-terminal , luego comencé el tmuxmultiplexor en él. Después de conectarme a un servidor CentOS 5 mediante un sshcomando, encuentro:
lsel resultado no tiene colortmux,screen,hexedit,htopTodo no se pudo iniciar con el mensaje de error como:terminal abierto fallido: terminal faltante o inadecuado: screen-256color
Parece que sshpasa la variable de entorno $ TERM al servidor, pero no puedo encontrarla en el /etc/ssh/ssh_configarchivo de Fedora 18.
Aunque puedo cambiar manualmente la variable $ TERM en el servidor, cada vez que me conecto, sucede nuevamente. Entonces, ¿cómo prevenirlo?
fuente

infocmpytic, una vez compilado, no es necesario cambiarlo temporalmente de$TERMnuevo. por cierto, acabo de copiar (rsync)/usr/share/terminfo/s/screen-256colorde Fedora 18 a CentOS, parece que funciona bien (rsync -tv /usr/share/terminfo/s/screen-256color root@the_host:/usr/share/terminfo/s).tmuxen gnome-terminal de Fedora 18,tmuxcambiado$TERMvalor ascreen-256colorpartir dexterm-256color.infocmp | ssh -t root@remote-host 'cat > "$TERM.info" && tic "$TERM.info"'se puede acortar ainfocmp | ssh root@remote-host "tic -". Esto funciona porque cuando tiene una tubería, se puede acceder como un archivo mediante el uso, y afortunadamente, las tuberías funcionan a través de SSH.ticarchivos generados (compilador terminfo) será el mismo de un sistema a otro o que su ubicación será la misma.tictambién puede asegurarse de que los permisos sean correctos o crear directorios intermedios donde sea necesario.En mi caso, simplemente agregué un alias a mi
.zshrc(.bashrcsi uso bash) en mi escritorio local:Si ya usa un alias, ajústelo para incluir la asignación de entorno.
fuente
Puse esto en mi
.bashrcen el host remoto:De esa manera, ambos
xterm-256coloryscreen-265colorse manejan adecuadamente. Además, tengo la salida de la nota para que si el servidor se actualiza más tarde y admite 256 colores, no terminaré golpeando mi cabeza contra la pared preguntándome por qué mi variable TERM se cambia cuando SSHing.fuente
export TERM=${TERM%%-256color}El cambio
$TERMpodría funcionar, pero no sugiero esto, es solo una solución en lugar de una solución.Cuando encuentro este problema en mis sistemas, lo soluciono instalando soporte para los tipos de terminales más comunes en el sistema remoto:
yum install ncurses-baseparascreen-256coloren CentOSyum install ncurses-termparascreen-256color-bceen CentOSapt install ncurses-basepara ambosscreen-256coloryscreen-256color-bceen Debian, Ubuntu y MintLos paquetes relacionados con ncurses también proporcionan soporte para muchos otros terminales, y también están disponibles en todas las demás distribuciones grandes. (Pero para mi caso de uso y su pregunta, esta debería ser suficiente información)
fuente
Ver man ssh_config:
y man sshd_config:
De acuerdo con eso, el valor predeterminado debería ser no enviar ninguna variable, pero TERM parece ser especial. Se envía de todos modos.
Por lo tanto, puede cambiar TERM al llamar a ssh (like
TERM=xterm ssh ...), cambiarlo después de iniciar sesión (like in.bash_profile) o definir el tipo de TERM desconocido en el lado del servidor (suponiendo que tenga acceso root allí). Ver otra respuesta para más detalles.fuente
$TERMembargo, no establecer realmente no será mejor que establecerlo en un valor no compatible.$TERMtemporalmente puede ser una solución, pero necesito hacerlo cada vez. por cierto, parece que ambos CentOS 5 y Fedora 18 Aceptar Env todas las variables de entorno local (LANG,LC_*, ...)