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?


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 user@example.com

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

AcceptEnv FOO

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.


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'

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.