Pregunta ¿Puedo reenviar variables de env sobre ssh?


Trabajo con varios servidores diferentes, y sería útil poder establecer algunas variables de entorno de manera que estén activas en todas ellas cuando establezca SSH. El problema es que el contenido de algunas de las variables contiene información confidencial (hash). contraseñas), así que no quiero dejarlo en un archivo .bashrc. Me gustaría guardarlo solo en la memoria.

Sé que puede usar SSH para reenviar la variable DISPLAY (a través de ForwardX11) o un proceso de Agente SSH (a través de ForwardAgent), por lo que me pregunto si hay una forma de reenviar automáticamente el contenido de variables de entorno arbitrarias a través de conexiones SSH. Idealmente, algo que podría establecer en un archivo .ssh / config para que se ejecute automáticamente cuando lo necesite. ¿Algunas ideas?


32
2017-12-10 14:46


origen


Respuestas:


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

Lee las entradas para AcceptEnv en sshd_config (5) y SendEnv en ssh_config (5).

actualizar:

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

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

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

Si desea mantener esa información en secreto, es mejor pasarla a través de stdin:

cat secret_info | ssh foo@host remote_program

23
2017-12-10 15:04



No puedes hacerlo automáticamente (excepto $DISPLAY que puedes reenviar con -X junto con su información de 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 escamadas se expandirán localmente y el resultado se transmitirá al lado remoto. Entonces el PATH se establecerá con el valor remoto de $HOME.


11
2017-12-10 14:52