Mój problem polega na tym, że muszę ustawić zmienne env (takie jak GIT_EXEC_PATH) na serwerze. Potrzebuję tych zmiennych przy każdym połączeniu (więc przez bash i za pomocą poleceń zdalnych). Udało mi się ustawić te zmienne przez bash z .bash_profile, ale mam problemy ze zdalnymi poleceniami. Odkryłem, że możliwe jest pisanie poleceń w ~ / .ssh / Author_keys przed właściwym kluczem rsa, ale nie chcę tam pisać zawsze, potrzebuję stałego rozwiązania ... Odkryłem, że ~ / .ssh Plik / rc jest wykonywany przy każdym logowaniu ssh, więc umieściłem tam moje deklaracje zmiennych env, ale to nie działało. Zmienne są ustawione w pliku rc, ale potem zniknęły. : S Może plik rc działa w podpowłoce: S Czy jest jakiś sposób na zdefiniowanie tych zmiennych w bash i zdalnych poleceniach bez powielania kodu?
Edytować:
Zredagowałem pytanie, ponieważ serwer jest współdzielonym hostem chrzestnym, więc ma unikalną konfigurację. Pliki / etc / ssh / sshd_config i pliki / etc / ssh / ssh_config są puste. W tych plikach znajdują się komentarze, jeśli jesteś ciekawy, mogę je tutaj skopiować.
- ~ / .Bash_profile jest pozyskiwany (tylko przez połączenia bash),
- ~ / .bashrc nigdy nie jest pozyskiwany,
- profil ~ /. nigdy nie jest pozyskiwany,
- środowisko ~ / .ssh / nigdy nie jest pozyskiwane,
- ~ / .ssh / rc jest pozyskiwane (przez bash i zdalnie oba), ale myślę, że jest wywoływane w podpowłoce, ponieważ zmienne znikają.
- ~ / .Ssh / autoryzowane_klucze są pozyskiwane za każdym razem, ale muszę pisać polecenia przed każdym klawiszem rsa (więc nie chcę się z tym konfigurować).
Streszczenie:
Mogę dobrze skonfigurować bash (z .bash_profile), ale nie mogę skonfigurować zdalnych wywołań. To jest problem. Szukam pliku, który pochodzi zarówno z poleceń bash, jak i poleceń zdalnych.
Na przykład:
Komenda git-upload-pack znajduje plik exe, ponieważ zmienna env GIT_EXEC_PATH jest ustawiona, ale ze zdalnym: „git clone użytkownik@domena.com: myrepo local / myrepo” serwer nie znajduje tego polecenia, ponieważ GIT_EXEC_PATH nie jest ustawiony.
Edycja2:
Zgodnie z tym i moje dzienniki printenv: ~ / .ssh / rc działa w normalnej powłoce, a nie w podpowłoce, więc zagadką jest, dlaczego zmienne env nie przyklejają się ...
Utworzyłem plik wykonywalny: ~ / logenv :
echo "" >> mylog.txt
date >> mylog.txt
printenv >> mylog.txt
echo "" >> mylog.txt
I umieść to w ~ / .ssh / rc :
export AAA=teszt
source ~/logenv
Po logowaniu bash i logowaniu do źródła wynik był:
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
Zdalny „ssh myuser@domain.com 'exec ~ / logenv'” wynik był:
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
Więc plik rc jest pozyskiwany, ale potem zmienne rozpraszają ...: S