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

前端之家收集整理的这篇文章主要介绍了SSH – 通过每个连接设置env vairables – godaddy共享主机前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的问题是,我必须在服务器上设置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时,如果您不小心,您可能会完全破坏您登录服务器的能力.

猜你在找的Linux相关文章