También es posible pasar variables de entorno explícitamente a través de ssh. Requiere alguna configuración del lado del servidor, por lo que esta no es una respuesta universal.
En mi caso, quería pasar una clave de cifrado del repositorio de respaldo a un comando en el servidor de almacenamiento de respaldo sin tener esa clave almacenada allí, ¡pero tenga en cuenta que cualquier variable de entorno está visible en ps
! La solución de pasar la clave en stdin también funcionaría, pero la encontré demasiado engorrosa. En cualquier caso, aquí se explica cómo pasar una variable de entorno a través de ssh:
En el servidor, edite el sshd_config
archivo, por lo general, /etc/ssh/sshd_config
y agregue una AcceptEnv
directiva que coincida con las variables que desea pasar. Ver man sshd_config
. En mi caso, quiero pasar variables a borg backup, así que elegí:
AcceptEnv BORG_*
Ahora, en el cliente, use la -o SendEnv
opción para enviar variables de entorno. La siguiente línea de comando establece la variable de entorno BORG_SECRET
y luego la marca para que se envíe a la máquina cliente (llamada backup
). Luego se ejecuta printenv
allí y filtra la salida para las variables BORG:
$ BORG_SECRET=magic-happens ssh -o SendEnv=BORG_SECRET backup printenv | egrep BORG
BORG_SECRET=magic-happens