Mi problema es que tengo que establecer variables env (como GIT_EXEC_PATH) en un servidor. Necesito esas variables por cada conexión (así que por bash y por comandos remotos). Logré establecer esas variables bash con .bash_profile, pero tengo problemas con los comandos remotos. Descubrí que es posible escribir comandos en ~ / .ssh / Authorized_keys antes de la clave rsa real, pero no quiero escribir allí siempre, necesito una solución permanente ... Encontré que el ~ / .ssh El archivo / rc se ejecuta por cada inicio de sesión ssh, así que puse allí mis declaraciones de variables env, pero no funcionó. Las variables se establecen en el archivo rc, pero luego desaparecieron. : S Quizás el archivo rc se ejecute en una subshell: S ¿Hay alguna forma de definir esas variables en bash y en comandos remotos sin duplicación de código?
Editar:
Edité la pregunta, porque el servidor es un host compartido godaddy, por lo que tiene una configuración única. Los archivos / etc / ssh / sshd_config y / etc / ssh / ssh_config están vacíos. Hay comentarios en esos archivos, si tienes curiosidad, puedo copiarlo aquí.
- El ~ / .bash_profile se obtiene (solo por conexiones bash),
- ~ / .bashrc nunca se obtiene,
- el ~ / .profile nunca se obtiene,
- el entorno ~ / .ssh / nunca se obtiene,
- ~ / .ssh / rc tiene su origen (por bash y remoto ambos), pero creo que se llama en subshell, porque las variables están desapareciendo.
- Las ~ / .ssh / Authorized_keys se obtienen cada vez, pero tengo que escribir los comandos antes de cada tecla rsa (por lo que no quiero configurar con eso).
Resumen:
Puedo configurar bien el bash (con .bash_profile), pero no puedo configurar las llamadas remotas. Ese es el problema. Estoy buscando un archivo que proviene tanto de los comandos bash como remotos.
Por ejemplo:
El comando git-upload-pack encuentra el archivo exe, porque la variable env GIT_EXEC_PATH está configurada, pero con el control remoto: "git clone user@domain.com: myrepo local / myrepo" el servidor no encuentra ese comando, porque el GIT_EXEC_PATH no está configurado
Edit2:
De acuerdo con esto , y mis registros de printenv: el ~ / .ssh / rc se ejecuta en shell normal, no en subshell, por lo que es un enigma por qué las variables env no se pegan ...
Creé un ejecutable: ~ / logenv :
echo "" >> mylog.txt
date >> mylog.txt
printenv >> mylog.txt
echo "" >> mylog.txt
Y poner esto en ~ / .ssh / rc :
export AAA=teszt
source ~/logenv
Por bash login & "source logenv" el resultado fue:
Tue May 15 04:21:37 MST 2012
TERM=cygwin
SHELL=/bin/bash
SSH_CLIENT=censored
SSH_TTY=/dev/pts/2
USER=myuser
AAA=teszt
MAIL=/var/mail/myuser
PATH=/usr/local/bin:/bin:/usr/bin
PWD=/home/content/65/7962465
SHLVL=3
HOME=/var/chroot/home/content/65/7962465
LOGNAME=myuser
SSH_CONNECTION=censored
_=/usr/bin/printenv
Tue May 15 04:21:41 MST 2012
HOSTNAME=censored
TERM=cygwin
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=censored
De forma remota "ssh myuser@domain.com 'exec ~ / logenv'" el resultado fue:
Tue May 15 04:25:52 MST 2012
SHELL=/bin/bash
SSH_CLIENT=censored
USER=myuser
AAA=teszt
MAIL=/var/mail/myuser
PATH=/usr/local/bin:/bin:/usr/bin
PWD=/home/content/65/7962465
SHLVL=3
HOME=/var/chroot/home/content/65/7962465
LOGNAME=myuser
SSH_CONNECTION=censored
_=/usr/bin/printenv
Tue May 15 04:25:52 MST 2012
SHELL=/bin/bash
SSH_CLIENT=censored
USER=myuser
PATH=/usr/local/bin:/bin:/usr/bin
MAIL=/var/mail/myuser
PWD=/home/content/65/7962465
HOME=/var/chroot/home/content/65/7962465
Por lo tanto, el archivo rc se obtiene, pero después de eso las variables desaparecen ...