我的问题是,我必须在服务器上设置环境变量(如GIT_EXEC_PATH)。我需要每个连接都具有该变量(因此也需要bash和远程命令)。我设法使用.bash_profile通过bash设置了这些变量,但是远程命令存在问题。我发现有可能在实际的rsa密钥之前在〜/ .ssh / authorized_keys中编写命令,但是我并不想一直写在那里,我需要一个永久的解决方案...我发现〜/ .ssh / rc文件由每个ssh登录执行,因此我在其中放置了env变量声明,但是没有用。这些变量在rc文件中设置,但之后消失了。:S也许rc文件在子shell中运行:S是否可以在没有代码重复的情况下在bash和远程命令中定义这些变量?
编辑:
我编辑了问题,因为服务器是Godaddy共享主机,所以它具有唯一的配置。/ etc / ssh / sshd_config和/ etc / ssh / ssh_config文件为空。这些文件中有注释,如果您好奇,可以在这里复制。
- 〜/ .bash_profile是来源(仅通过bash连接),
- 〜/ .bashrc从未被获取,
- 〜/ .profile从未获得,
- 〜/ .ssh / environment从未被获取,
- 〜/ .ssh / rc是由bash和remote两者提供的,但是我认为它在subshell中被调用,因为变量消失了。
- 〜/ .ssh / authorized_keys每次都源,但是我必须在每个rsa密钥之前编写命令(因此,我不需要对其进行配置)。
摘要:
我可以很好地配置bash(使用.bash_profile),但是不能配置远程调用。那就是问题所在。我正在寻找由bash和远程命令来源的文件。
例如:
git-upload-pack命令找到exe文件,因为设置了GIT_EXEC_PATH env变量,但是对于远程:“ git clone user@domain.com:myrepo local / myrepo”,服务器找不到该命令,因为GIT_EXEC_PATH未设置。
编辑2:
根据这个,我的printenv日志:的〜/ .ssh / RC在正常shell中运行,而不是在子shell,所以这就是为什么ENV变量不是坚持一个谜......
我创建了一个可执行文件:〜/ logenv:
echo "" >> mylog.txt
date >> mylog.txt
printenv >> mylog.txt
echo "" >> mylog.txt
并将其放入〜/ .ssh / rc中:
export AAA=teszt
source ~/logenv
通过bash登录和“ 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文件是源文件,但是之后变量就消失了...:S