Ago 22 2021
SSH y Variables de Entorno
Se establecen pocas variables de entorno cuando se conecta con una clave SSH (clave autorizada) en un host remoto. El comando env que enumerará todas las variables de entorno disponibles en el servidor remoto muestra que este es realmente el caso (localhost es el objetivo aquí).
A veces desea pasar variables de entorno al host a través del comando SSH. Por ejemplo, para ejecutar un programa usando bibliotecas colocados en un directorio inusual, la variable LD_LIBRARY_PATH debe ser definido.
Si Tiene Acceso root en la Máquina Remota
Esto se puede lograr en 2 pasos:
– Agregue ‘PermitUserEnvironment yes’ a su archivo sshd_config y reinicie el demonio SSH.
De hecho, el valor predeterminado de PermitUserEnvironment es ‘No’ la mayor parte del tiempo..
$ ssh localhost 'sudo sshd -T' | grep -i environment
permituserenvironment no
– Establezca las variables de entorno en .ssh/environment en el host remoto en su directorio de inicio en el formato variable = valor.
p.ej LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib
Variable de entorno en el comando SSH
Si no es posible que cambie la configuración de sshd en el host remoto, siempre puede pasar la variable de entorno con el comando SSH. Es menos elegante, especialmente en el ejemplo anterior, ya que el path depende de la ruta en la que se han instalado las bibliotecas, en la máquina específica.. Las secuencias de escape pueden ser complicadas, pero esta solución funciona igual de 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