是否可以通过ssh声明一个全局变量,以便可以从其他ssh连接访问它?举个例子 ssh firas@10.0.0.1“x = 10” 另一个用户x可以通过sshing到机器来回显值x = 10 ssh x@10.0.0.1“echo $ x”
答案 0 :(得分:4)
不是直接的,但如果您使用OpenSSH
则相当容易。首先,启用
在PermitUserEnvironment
配置中sshd
并重新启动sshd
。意识到
man sshd_config
中描述的可能的安全隐患:
PermitUserEnvironment
Specifies whether ~/.ssh/environment and environment= options in ~/.ssh/authorized_keys are processed
by sshd(8). The default is no. Enabling environment processing may enable users to bypass access
restrictions in some configurations using mechanisms such as LD_PRELOAD.
现在您将新变量保存到~/.ssh/environment
:
ssh localhost 'echo variable=new-value-of-the-var > ~/.ssh/environment'
另一位用户可以阅读:
$ ssh localhost 'echo $variable'
new-value-of-the-var
请注意,您需要使用单引号'
代替"
,以防止shell在将$variable
传递给ssh
之前展开{。}}。
但是,如果您使用dropbear
,它将无法运作:http://lists.ucc.gu.uwa.edu.au/pipermail/dropbear/2007q3/000615.html
答案 1 :(得分:2)
简短回答是否
当您进入主机时,您的会话会生成子shell(子进程)以进行操作。子进程的父进程将是远程计算机上的shell。
孩子不能影响其父母的环境。
因此,生成的用于处理ssh连接的任何子shell都无法设置在关闭连接后将保留的任何变量。
注意:但是,您可以写入主机上的文件,然后该文件可用于后续连接。