答案1
该~/.ssh/environment
文件可用于设置您希望远程命令可用的变量。您必须PermitUserEnvironment
在 sshd 配置中启用它。
以这种方式设置的变量将导出到子进程,因此您可以:
echo "Foo=Bar" > sshenv
echo "Joe=37" >> sshenv
scp sshenv user@server:~/.ssh/environment
ssh user@server myscript
并且 myscript 会知道 Foo 是 Bar 而 Joe 是 37。
答案2
选择SendEnv
权在你手里。
〜/.ssh /配置:(本地)
SendEnv MYVAR
在 /etc/ssh/sshd_config 中:(在远端)
AcceptEnv MYVAR
现在,无论本地的值$MYVAR
是什么,它在远程会话中也可用。
如果您多次登录,则每个会话都会有自己的副本$MYVAR
,并且值可能不同。
~/.ssh/environment
$ENV
用于其他目的。它在执行时充当文件无壳远程命令。
答案3
您可以使用类似如下的命令传递值:
ssh username@machine VAR=value cmd cmdargs
您可以使用以下方法进行测试:
ssh machine VAR=hello env
在 tcsh 上,以下操作似乎有效:
ssh machine "setenv VAR <value>; printenv"
答案4
bla="MyEnvSelection=dcop"
ssh user@host "export $bla && ./runProg"
在 bash 上我测试了:
$ echo '#!/bin/sh' > readEnv.sh
$ echo 'echo "MyEnv: "$MyEnvFromSSH' >> readEnv.sh
$ scp readEnv.sh user@host:~/
$ bla="MyEnvFromSSH=qwert"
$ ssh user@host "export $bla && ./readEnv.sh"