Définition d'une variable pour un hôte SSH donné

17

Dans ssh_config, on peut choisir d'exporter certaines variables d'environnement vers l'hôte à l'aide SendEnv.

Existe-t-il également un moyen de forcer une valeur donnée pour cette variable, par hôte? Par exemple, serait-il possible d'exporter une variable $FOOavec valeur baruniquement lors de la connexion à l'hôte example.com?

ℝaphink
la source

Réponses:

16

Vous ne pouvez pas donner une valeur spécifique pour une variable d'environnement dans ssh_config, mais vous pouvez certainement envoyer la variable d'environnement existante uniquement à des hôtes spécifiques.

Host example.com
    SendEnv FOO

Pour compléter la chaîne:

FOO=bar ssh [email protected]

Enfin, le serveur distant doit avoir la variable d'environnement répertoriée AcceptEnvdans son sshd_config.

AcceptEnv FOO
Michael Hampton
la source
QUEL est précisément ce que vous aimeriez éviter?
Michael Hampton
1
Devoir écrire un alias pour envoyer une variable avec une valeur donnée.
ℝaphink
Désolé, vous ne pouvez pas faire grand-chose d'autre, à moins que vous ne puissiez lire l'ordinateur dans votre esprit. :)
Michael Hampton
6
Merci de confirmer mes soupçons bien ;-) Ce que je l' aurais aimé aurait été quelque chose comme SetVar FOO='bar'dans ssh_config;)
ℝaphink
2
Le cas récurrent pour moi est que les anciens systèmes ne prennent pas en charge, TERM=tmux-256colordonc je voudrais un repli par hôte distant (avec des caractères génériques).
Jed
4

Vous pouvez donner une valeur spécifique en utilisant SetEnvdans ~/.ssh/config, par exemple

Host *
  SetEnv FOO=bar

Selon man ssh_config:

Spécifiez directement une ou plusieurs variables d'environnement et leur contenu à envoyer au serveur. De même SendEnv, le serveur doit être prêt à accepter la variable d'environnement.

En supposant que votre serveur a obtenu la ligne suivante /etc/ssh/sshd_config:

AcceptEnv LANG LC_* FOO

Vérifiez également: man ssh_configet man sshd_config.

Kenorb
la source
2
Remarque pour le lecteur perplexe (comme moi, lorsque j'ai lu ceci pour la première fois): Ceci est nouveau depuis OpenSSH 7.8, sorti en août 2018, et il faudra un certain temps pour qu'il devienne disponible pour l'utilisateur moyen via les mises à jour du système d'exploitation. (Mais une fois que cela deviendra courant, ce sera de loin la meilleure solution au problème)
Irfy
1

Une autre idée est de définir les variables d'environnement dans la commande ssh et d'exécuter un shell interactif, par exemple. j'essaie d'invoquer un shell interactif avec env-var 'MANWIDTH':

ssh example.com 'MANWIDTH=120 bash -li'
huch
la source
0

Vous pouvez définir des valeurs de configuration par hôte à l'aide du fichier .ssh / config. Par exemple:

Host example.com
SendEnv FOO

Notez que le serveur doit également le prendre en charge.

user156525
la source