Puis-je changer le type de terminal utilisé pour se connecter via SSH?

Lorsque je me connecte sur un server particulier via SSH (auquel je n'ai pas d'access administrateur), j'obtiens l'erreur suivante: urxvt-unicode: Unknown terminal type (je ne veux pas changer mon type de terminal en permanence). C'est important car en fonction du type de terminal, je reçois des colors différentes lorsque je suis connecté.

Est-il possible de changer le type de terminal juste lors de la connection à SSH?

Si vous avez un access root à la boîte distante, installez le package ncurses-term . Cela fournira l'input terminfo rxvt-256color .

En tant qu'user non root, vous pouvez également copyr les inputs terminfo rxvt sur $HOME/.terminfo/r/ sur la machine distante et exporter TERMINFO=$HOME/.terminfo .

 ssh <host> 'mkdir -p .terminfo/r' scp /usr/share/terminfo/r/rxvt-unicode-256color <host>:~/.terminfo/r/ 

après la connection, vous pouvez exécuter quelque chose comme:

 export TERM=vt100 

sshd process (from sshd (8)) va lire …

 6. Reads the file ~/.ssh/environment, if it exists, and users are allowed to change their environment. See the PermitUserEnvironment option in sshd_config(5). 

et

 8. If ~/.ssh/rc exists, runs it; else if /etc/ssh/sshrc exists, runs it; otherwise runs xauth. The “rc” files are given the X11 authentication protocol and cookie in standard input. See SSHRC, below. 

vous pourriez vouloir modifier ~/.ssh/rc pour configurer la valeur de TERM, car ce file est lu avant le profil du shell.

Habituellement TERM est passé de votre environnement local, inchangé, à l'environnement distant. Si vous définissez TERM sur le côté local lors de l'appel de ssh , cela fera ce qui est nécessaire.

Par exemple, si l'extrémité distante a la description du terminal pour rxvt (mais pas rxvt-unicode ), cela fonctionnerait assez bien pour les touches de fonction, etc.

En supposant que bash ou un shell qui est conforme à POSIX, vous pouvez le faire en

TERM=rxvt ssh remotehost

Le faire de cette façon affecte uniquement la command ssh , pas votre environnement local. J'utilise cette fonctionnalité pour manipuler des machines typiques qui n'ont pas la description de screen.xterm-new . Selon la machine distante, il peut y avoir ou non un package approprié qui peut être installé pour la database complète du terminal . Certains (tels que Solaris et FreeBSD) nécessitent la solution de contournement.

Pour en savoir plus:

  • La database terminfo est grande-ai-je besoin de tout cela?