¿Puedo reenviar variables env a través de ssh?


Trabajo con varios servidores diferentes, y sería útil poder establecer algunas variables de entorno de tal manera que estén activas en todos ellos cuando entre SSH. El problema es, el contenido de algunas de las variables contienen información confidencial (contraseñas con hash), y por lo que no quiero dejarlo tirado en un .bashrc archivo -- me gustaría mantenerlo en la memoria.

Sé que puede usar SSH para reenviar la variable de VISUALIZACIÓN (a través de ForwardX11) o un proceso de agente SSH (a través de ForwardAgent), así que me pregunto si hay una manera de reenviar automáticamente el contenido de variables de entorno arbitrarias a través de conexiones SSH. Idealmente, algo que podría establecer en una .archivo ssh / config para que se ejecute automáticamente cuando lo necesite. Alguna idea?

Author: singingwolfboy, 2010-12-10

2 answers

Puede, pero requiere cambiar la configuración del servidor.

Leer las entradas para {[2] {} en[8]}sshd_config(5) y {[3] {} en[10]}ssh_config(5).

Actualización :

También puede pasarlos en la línea de comandos:

ssh foo@host "FOO=foo BAR=bar doz"

Con respecto a la seguridad, tenga en cuenta que cualquiera con acceso a la máquina remota podrá ver las variables de entorno pasadas a cualquier proceso en ejecución.

Si quieres mantener esa información en secreto es mejor pásalo a través de stdin:

cat secret_info | ssh foo@host remote_program
 24
Author: salva,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-10 15:10:01

No puede hacerlo automáticamente (excepto $DISPLAY que puede reenviar con -X junto con su información Xauth para que los programas remotos puedan conectarse a su pantalla), pero puede usar un script con un "documento aquí":

ssh ... <<EOF
export FOO="$FOO" BAR="$BAR" PATH="\$HOME/bin:\$PATH"
runRemoteCommand
EOF

Las variables no registradas se expandirán localmente y el resultado se transmitirá al lado remoto. Así que el PATH se establecerá con el valor remoto de $HOME.

 11
Author: Aaron Digulla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-10 14:52:42