加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

SSH – 通过每个连接设置env vairables – godaddy共享主机

发布时间:2020-12-13 18:31:58 所属栏目:Linux 来源:网络整理
导读:我的问题是,我必须在服务器上设置env变量(如GIT_EXEC_PATH).我需要每个连接的变量(所以通过bash和远程命令).我设法用bash和.bash_profile设置这些变量,但我的远程命令有问题.我发现在实际的rsa键之前可以在?/ .ssh / authorized_keys中编写命令,但是我不想总
我的问题是,我必须在服务器上设置env变量(如GIT_EXEC_PATH).我需要每个连接的变量(所以通过bash和远程命令).我设法用bash和.bash_profile设置这些变量,但我的远程命令有问题.我发现在实际的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 /环境永远不会被采购,
>?/ .ssh / rc来源(通过bash和远程两者),但我认为是
在子shell中调用,因为变量消失了.
>?/ .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没有设定.

EDIT2:

根据this和我的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登录& “来源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

解决方法

假设您在/ etc / ssh / sshd_config中使用了UsePAM,并假设您希望为每个用户设置这些环境变量,则可以为您设置pam set环境变量.如果您在/ etc / gitenv中定义了环境变量,则可以将此行添加到/etc/pam.d/sshd
auth required pam_env.so envfile=/etc/gitenv

或者通过插入此文件,您可能会发现已经使用了pam_env.so,并且已经有一个文件可以添加内容.只是要小心,并确保在结束ssh会话之前已经彻底测试了您的更改,因为当您弄乱pam时,如果您不小心,您可能会完全破坏您登录服务器的能力.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读