Meu problema é que eu tenho que definir variáveis env (como GIT_EXEC_PATH) em um servidor. Eu preciso que as variáveis por cada conexão (assim por bash e por comandos remotos também). Eu consegui definir essas variáveis por bash com .bash_profile, mas tenho problemas com os comandos remotos. Eu descobri que é possível escrever comandos em ~ / .ssh / authorized_keys antes da chave rsa atual, mas eu não quero escrever lá sempre, eu preciso de uma solução permanente ... Eu achei que o ~ / .ssh / rc arquivo é executado por cada login ssh, então eu coloquei lá minhas declarações de variáveis env, mas não funcionou. As variáveis são definidas no arquivo rc, mas depois disso elas desaparecem. : S Talvez o arquivo rc seja executado em um subshell: S Existe alguma maneira de definir essas variáveis no bash e em comandos remotos sem a duplicação de código?
Editar:
Eu editei a questão, porque o servidor é um host compartilhado godaddy, então ele tem uma configuração única. Os arquivos / etc / ssh / sshd_config e / etc / ssh / ssh_config estão vazios. Há comentários nesses arquivos, se você está curioso, eu posso copiá-lo aqui.
- O ~ / .bash_profile é originado (somente por conexões bash),
- o ~ / .bashrc nunca é originado,
- o ~ / .profile nunca é originado,
- o ambiente ~ / .ssh / nunca é originado,
- o ~ / .ssh / rc é originado (por bash e remoto ambos), mas eu acho que é
chamado em subshell, porque as variáveis desaparecem.
- O ~ / .ssh / authorized_keys é originado por todas as vezes, mas eu tenho que
escrever os comandos antes de cada chave rsa (então eu não quero
configurar com isso).
Resumo:
Eu posso configurar o bash bem (com .bash_profile), mas não consigo configurar as chamadas remotas. Esse é o problema. Eu estou procurando por um arquivo que é originado por ambos os comandos bash e remoto.
Por exemplo:
O comando git-upload-pack localiza o arquivo exe, porque a variável env do GIT_EXEC_PATH está definida, mas com o remote: "git clone [email protected]: meurepo local / meurepo" o servidor não encontra esse comando, porque o GIT_EXEC_PATH não está definido.
Edit2:
De acordo com este e meus registros printenv: o ~ / .ssh / rc está rodando no shell normal, não no subshell, então é um enigma por que as variáveis do env não grudam ...
Eu criei um executável: ~ / logenv :
echo "" >> mylog.txt
date >> mylog.txt
printenv >> mylog.txt
echo "" >> mylog.txt
E coloque isso no ~ / .ssh / rc :
export AAA=teszt
source ~/logenv
Por bash login & "source logenv" o resultado foi:
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
Por remoto "ssh [email protected] 'exec ~ / logenv'" o resultado foi:
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
Assim, o arquivo rc é originado, mas depois disso as variáveis desaparecem ...: S