Nov 21 2008

SSH et les variables d’environnement

Publié par à 12:13 sous SSH

Peu de variables d’environnement sont définies lors d’une connection avec une clé SSH (authorized key) sur un hôte distant. La commande env qui va lister toutes les variables d’environnement disponibles sur le serveur distant montre que c’est bien le cas (localhost est la cible ici).
 

Variables d'environnement SSH


Parfois, vous souhaitez passer des variables d’environnement à l’hôte via la commande SSH. Par exemple, pour exécuter un programme faisant appel à des librairies placées dans un répertoire inhabituel, il faudrait définir la variable LD_LIBRARY_PATH.


Si Vous Avez l’Accès root sur la Machine Distante

Ceci peut être accompli en 2 étapes:

– Ajoutez ‘PermitUserEnvironment yes’ à votre fichier sshd_config et redémarrez le daemon SSH.
En effet, la valeur par défaut de PermitUserEnvironment est ‘No’ la plupart du temps.

$ ssh localhost 'sudo sshd -T' | grep -i environment
permituserenvironment no


– Définissez les variables d’environnement dans .ssh/environment sur l’hôte distant dans votre répertoire maison sous le format variable=valeur.
ex LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib


Variable d’Environnement dans la Commande SSH

S’il ne vous est pas possible de changer la configuration sshd sur l’hôte distant, vous pouvez toujours passer la variable d’environnement avec la commande SSH. C’est moins élégant, surtout dans l’exemple précédent puisque le path dépend du chemin dans lequel les librairies ont été installées, sur la machine spécifique. Les séquences d’échappement peuvent être compliquées, mais cette solution fonctionne tout aussi bien.

$ ssh localhost LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib env
LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib
SHELL=/bin/bash
SSH_CLIENT=127.0.0.1 53816 22
USER=dave
MAIL=/var/mail/dave
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
PWD=/home/dave
LANG=en_US.UTF-8
SHLVL=1
HOME=/home/dave
LOGNAME=dave
SSH_CONNECTION=127.0.0.1 53816 127.0.0.1 22
_=/usr/bin/env

No responses yet

Comments RSS

Leave a Reply