내 문제는 서버에서 env 변수 (예 : GIT_EXEC_PATH)를 설정해야한다는 것입니다. 모든 연결 (bash 및 원격 명령 중 하나)에 의해 변수가 필요합니다. bash_profile을 사용하여 bash로 변수를 설정했지만 원격 명령에 문제가 있습니다. 실제 rsa 키 이전에 ~ / .ssh / authorized_keys에 명령을 작성할 수 있다는 것을 알았지 만 항상 거기에 쓰지 않고 영구적 인 해결책이 필요합니다 ... ~ / .ssh / rc 파일은 모든 ssh 로그인에 의해 실행되므로 env 변수 선언을 넣었지만 작동하지 않았습니다. 변수는 rc 파일에 설정되었지만 그 후에 사라졌습니다. : S 아마도 rc 파일이 서브 쉘에서 실행될 수도 있습니다.
편집하다:
서버가 godaddy 공유 호스트이기 때문에 질문을 편집 했으므로 고유 한 구성이 있습니다. / etc / ssh / sshd_config 및 / etc / ssh / ssh_config 파일이 비어 있습니다. 그 파일에 의견이 있습니다. 궁금한 점이 있으면 여기에 복사 할 수 있습니다.
- ~ / .bash_profile은 소스입니다 (bash 연결 만).
- ~ / .bashrc는 결코 소스되지 않습니다.
- ~ / .profile은 소스가되지 않습니다.
- ~ / .ssh / environment는 결코 소싱되지 않습니다.
- ~ / .ssh / rc는 (bash와 remote 둘 다에 의해) 제공되지만 변수가 사라지기 때문에 서브 쉘에서 호출 된 것 같습니다.
- ~ / .ssh / authorized_keys는 매번 소스로 제공되지만 모든 rsa 키 앞에 명령을 작성해야합니다 (따라서 구성하지 않으려 고 함).
요약:
.bash_profile을 사용하여 bash를 잘 구성 할 수는 있지만 원격 호출을 구성 할 수는 없습니다. 그것이 문제이다. bash와 remote 명령 모두에 의해 제공되는 파일을 찾고 있습니다.
예를 들면 다음과 같습니다.
git-upload-pack 명령은 GIT_EXEC_PATH env 변수가 설정되어 있지만 원격 : "git clone user@domain.com : myrepo local / myrepo"로 인해 exe 파일을 찾습니다. GIT_EXEC_PATH 때문에 서버가 해당 명령을 찾지 못합니다. 설정되어 있지 않습니다.
편집 2 :
this 및 내 printenv 로그 에 따르면 ~ / .ssh / rc는 하위 쉘이 아닌 일반 쉘에서 실행되므로 env 변수가 고착되지 않는 이유는 수수께끼입니다 ...
실행 파일을 만들었습니다 : ~ / logenv :
echo "" >> mylog.txt
date >> mylog.txt
printenv >> mylog.txt
echo "" >> mylog.txt
그리고 이것을 ~ / .ssh / rc에 넣으십시오 :
export AAA=teszt
source ~/logenv
bash login & "source logenv" 의 결과는 다음과 같습니다.
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
원격 "ssh myuser@domain.com 'exec ~ / logenv'" 의 결과는 다음과 같습니다.
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
그래서 rc 파일은 소싱되지만 그 후에 변수는 disappering ... : S