Atualmente, estou usando o gnome-terminal do Fedora 18 e iniciei o multiplexador nele. Depois que eu me conectei a um servidor CentOS 5 via comando, eu encontrei:tmux
ssh
ls
resultado não tem cortmux
,screen
,hexedit
,htop
Tudo falhou ao iniciar com mensagem de erro como:falha no terminal aberto: terminal ausente ou inadequado: screen-256color
Parece que ssh
passa a variável de ambiente $ TERM para o servidor, mas não consigo encontrá-la no /etc/ssh/ssh_config
arquivo do Fedora 18.
Embora eu possa alterar manualmente a variável $ TERM no servidor, sempre que eu conectar, isso acontece novamente. Então, como evitá-lo?
fonte
infocmp
etic
, uma vez compilado, não há necessidade de alterar temporariamente$TERM
novamente. a propósito, eu apenas copiei (rsync)/usr/share/terminfo/s/screen-256color
do Fedora 18 para o CentOS, parece que funciona bem (rsync -tv /usr/share/terminfo/s/screen-256color root@the_host:/usr/share/terminfo/s
).tmux
no gnome-terminal do Fedora 18,tmux
alterei o$TERM
valor parascreen-256color
fromxterm-256color
.infocmp | ssh -t root@remote-host 'cat > "$TERM.info" && tic "$TERM.info"'
pode ser reduzido parainfocmp | ssh root@remote-host "tic -"
. Isso funciona porque quando você tem um canal, ele pode ser acessado como um arquivo usando - e, felizmente, os canais funcionam no SSH.tic
arquivos gerados (compilador terminfo) será o mesmo de um sistema para o outro ou que a localização deles será a mesma.tic
também pode garantir que as permissões estejam corretas ou criar diretórios intermediários quando necessário.No meu caso, simplesmente adicionei um alias ao meu
.zshrc
(.bashrc
se estiver usando o bash) na área de trabalho local:Se você já usa um alias, ajuste-o para incluir a atribuição Ambiente.
fonte
Coloquei isso no meu
.bashrc
host remoto:Dessa forma, ambos
xterm-256color
escreen-265color
são tratados adequadamente. Além disso, eu tenho que enviar a nota para que, se o servidor for atualizado posteriormente e oferecer suporte a 256 cores, não acabarei batendo com a cabeça na parede, perguntando-me por que minha variável TERM é alterada quando o SSHing.fonte
export TERM=${TERM%%-256color}
Mudar
$TERM
pode funcionar, mas não sugiro isso, é apenas uma solução alternativa em vez de uma solução.Quando encontro esse problema nos meus sistemas, eu o corrigo instalando o suporte para os tipos de terminal mais comuns no sistema remoto:
yum install ncurses-base
parascreen-256color
no CentOSyum install ncurses-term
parascreen-256color-bce
no CentOSapt install ncurses-base
para ambosscreen-256color
escreen-256color-bce
no Debian, Ubuntu e MintOs pacotes relacionados ao ncurses também oferecem suporte a muitos outros terminais e também estão disponíveis em todas as outras grandes distribuições. (Mas, para o meu caso de uso e sua pergunta, essas informações devem ser suficientes)
fonte
Veja man ssh_config:
e man sshd_config:
De acordo com isso, o padrão deve ser não enviar nenhuma variável, mas TERM parece ser especial. É enviar de qualquer maneira.
Portanto, você pode alterar o TERM ao chamar ssh (como
TERM=xterm ssh ...
), alterá-lo após o login (como em.bash_profile
) ou definir o tipo de TERM desconhecido no lado do servidor (supondo que você tenha acesso root lá). Veja outra resposta para detalhes.fonte
$TERM
realmente não será melhor do que configurá-lo para um valor não suportado.$TERM
temporariamente pode ser uma solução alternativa, mas preciso fazer isso sempre. a propósito, parece que ambos CentOS 5 e Fedora 18 Aceite Env todas as variáveis de ambiente local (LANG
,LC_*
...)