Mon problème est que je dois définir des variables env (comme GIT_EXEC_PATH) sur un serveur. J'ai besoin de ces variables à chaque connexion (donc par bash et par des commandes à distance non plus). J'ai réussi à définir ces variables par bash avec .bash_profile, mais j'ai des problèmes avec les commandes à distance. J'ai trouvé qu'il était possible d'écrire des commandes dans ~ / .ssh / authorized_keys avant la clé rsa réelle, mais je ne veux pas y écrire toujours, j'ai besoin d'une solution permanente ... J'ai trouvé que le ~ / .ssh Le fichier / rc est exécuté par chaque connexion ssh, donc j'ai mis mes déclarations de variables env, mais cela n'a pas fonctionné. Les variables sont définies dans le fichier rc, mais après cela, elles ont disparu. : S Peut-être que le fichier rc s'exécute dans un sous-shell: S Y a-t-il un moyen de définir ces variables dans bash et dans les commandes à distance sans duplication de code?
Éditer:
J'ai édité la question, car le serveur est un hôte partagé godaddy, il a donc une configuration unique. Les fichiers / etc / ssh / sshd_config et / etc / ssh / ssh_config sont vides. Il y a des commentaires dans ces fichiers, si vous êtes curieux, je peux les copier ici.
- Le ~ / .bash_profile provient (par les connexions bash uniquement),
- le ~ / .bashrc n'est jamais sourcé,
- le ~ / .profile n'est jamais sourcé,
- l'environnement ~ / .ssh / n'est jamais sourcé,
- le ~ / .ssh / rc est originaire (par bash et remote both), mais je pense qu'il est appelé en sous-shell, car les variables disparaissent.
- Le ~ / .ssh / authorized_keys provient de chaque fois, mais je dois écrire les commandes avant chaque clé rsa (donc je ne veux pas configurer avec ça).
Résumé:
Je peux bien configurer le bash (avec .bash_profile), mais je ne peux pas configurer les appels distants. C'est le problème. Je recherche un fichier provenant à la fois de commandes bash et distantes.
Par exemple:
La commande git-upload-pack trouve le fichier exe, car la variable env GIT_EXEC_PATH est définie, mais avec remote: "git clone user@domain.com: myrepo local / myrepo" le serveur ne trouve pas cette commande, car GIT_EXEC_PATH n'est pas défini.
Edit2:
Selon cela , et mes journaux printenv: le ~ / .ssh / rc fonctionne en shell normal, pas en sous-shell, c'est donc une énigme pour laquelle les variables env ne collent pas ...
J'ai créé un exécutable: ~ / logenv :
echo "" >> mylog.txt
date >> mylog.txt
printenv >> mylog.txt
echo "" >> mylog.txt
Et mettez ceci dans le ~ / .ssh / rc :
export AAA=teszt
source ~/logenv
Par bash login & "source logenv" le résultat était:
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
Par "ssh myuser@domain.com 'exec ~ / logenv'" distant, le résultat était:
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
Le fichier rc provient donc, mais après cela, les variables disparaissent ...: S