Utilisez ~ .ssh / config pour toujours définir TERM = cygwin pour certains hôtes?

4

J'utilise WinSSHd sur plusieurs serveurs Windows. Pour y accéder à partir de mon Mac (et vraisemblablement de tout terminal basé sur Unix), je dois définir la TERMvariable d'environnement sur cygwin, par exemple:

TERM=cygwin ssh someserver.com

Je peux également utiliser le .ssh/configpour définir certains paramètres par défaut pour ce serveur, tels qu'un autre utilisateur et un autre port que celui par défaut:

host someserver.com
    User SomeDifferentDude
    Port 22222

Cependant, je ne peux apparemment pas définir les variables d'environnement de cette façon. De toute façon, je n'ai rien trouvé man ssh_config. Est-il possible de définir l'émulation de terminal par défaut (et / ou une variable d'environnement) par hôte?

Sören Kuklau
la source

Réponses:

2

Vous définissez généralement la variable d’environnement côté serveur.

Si WinSSHd est suffisamment semblable à openssh (l'implémentation unix habituelle de ssh), vous pouvez définir un fichier d'environnement ( ~/.ssh/environmentsous Unix) et le placer TERM=cygwinici.

Vous pouvez également définir la variable d'environnement dans votre fichier d'initialisation du shell. Puisque vous mentionnez cygwin, c’est probablement ~/.bash_profileoù se ~trouve votre répertoire personnel cygwin. Vous devez le définir de manière conditionnelle, au cas où vous utiliseriez également cygwin sur d’autres types de terminaux; Par exemple, pour le définir uniquement si vous vous connectez via ssh (encore une fois, en supposant que WinSSHd ressemble suffisamment à openssh):

if [ -n "$SSH_CLIENT" ]; then
  export TERM=cygwin
fi
Gilles
la source
Merci. Je ne pouvais pas trouver un moyen de définir des variables d'environnement dans les paramètres de son serveur, mais j'ai finalement trouvé une solution bien meilleure.
Sören Kuklau
1

Il s'avère que la solution est bien meilleure: WinSSHd prend en charge le terminfoformat Unix . Il ne me reste donc qu'à copier le terminfofichier approprié (sous OS X: xterm-color) dans son répertoire. Ce TERM=cygwinparamètre devient inutile.

Sören Kuklau
la source
0

Vous pouvez utiliser SendEnv TERMpour définir le TERM sur le serveur comme identique au TERM sur votre ordinateur local.

indirect
la source