私の問題は、サーバー上で環境変数(GIT_EXEC_PATHなど)を設定する必要があることです。すべての接続で変数が必要です(bashおよびリモートコマンドのいずれかで)。.bash_profileを使用してbashでこれらの変数を設定できましたが、リモートコマンドに問題があります。〜/ .ssh / authorized_keysに実際のrsaキーの前にコマンドを書くことができることを発見しましたが、いつもそこに書くことは望んでいません。永続的な解決策が必要です...〜/ .ssh / rcファイルはすべてのsshログインで実行されるため、そこにenv変数宣言を配置しましたが、機能しませんでした。変数はrcファイルで設定されますが、その後消えました。:S rcファイルはサブシェルで実行される可能性があります:S bashおよびコードの重複なしでリモートコマンドでこれらの変数を定義する方法はありますか?
編集:
サーバーは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コマンドとリモートコマンドの両方をソースとするファイルを探しています。
例えば:
GIT_EXEC_PATH env変数が設定されているため、git-upload-packコマンドはexeファイルを検出しますが、リモートで「git clone user@domain.com:myrepo local / myrepo」を実行すると、サーバーはそのコマンドを検出しません。設定されていません。
編集2:
よると、この、と私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ログインと「ソース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ファイルはソースになりますが、その後変数は消えます...:S