我正在从Windows cygwin ssh到Open SUSE Linux服务器。 我想通过ssh命令发送一个本地环境variables,这样我就可以在login后立即加载一些特定的.bashrc文件。下面是我试过的。
Windows机器有这个envvariables
IDENTITY=samiron echo %IDENTITY% samiron
在Linux机器上我有
vim /etc/ssh/sshd_config AcceptEnv IDENTITY
在/home/user/.bashrc我写了类似的东西
export ME=$IDENTITY
我的计划是有一个像.bashrc.samiron文件,并从.bashrc文件source ~/.bashrc.$ME 。
不过,我正在做如下ssh,期待variables$ME包含"samiron"
ssh -o SendEnv=IDENTITY [email protected]
但是在logging之后
user@server:~> echo $ME
它什么也没有显示 任何人都可以build议我在这里做错了吗?
这两个条件应该能够按照预期的方式工作:
您的ssh服务器必须被configuration为接受来自本地客户端环境的variables转发。 因为允许这样的行为可能是安全风险,所以通常默认情况下是禁用的。 您可以通过在您的ssh服务器configuration中指定“AcceptEnv”指令来启用它。 所以把这样的东西放在/ etc / ssh / sshd_config文件中,并重新加载 ssh服务器服务(variables名可以包含通配符,可以指定多个由空格分隔的variables, man sshd_config中的详细信息)
AcceptEnv VARIABLE_NAME
此function仅适用于版本2的 ssh协议。 如果没有改变( “协议”指令),它几乎可以在所有现代Linux发行版中实现。
哦,我错过了重新启动sshd服务器的一部分。
sudo /etc/init.d/sshd restart
解决了我的问题