首页 > 解决方案 > 通过 ssh 声明变量

问题描述

是否可以通过 ssh 声明一个全局变量,以便可以从其他 ssh 连接访问它?例如 ssh firas@10.0.0.1 "x=10" 另一个用户 x 可以通过 ssh 到机器来回显值 x=10 ssh x@10.0.0.1 "echo $x"

标签: linuxbashssh

解决方案


不是直接的,但如果你使用OpenSSH. 首先, PermitUserEnvironmentsshd配置中启用并重新启动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

请注意,您需要使用单引号'而不是"for this 以防止您的 shell$variable在传递给ssh.

但是,如果您使用它就行不通:http dropbear: //lists.ucc.gu.uwa.edu.au/pipermail/dropbear/2007q3/000615.html


推荐阅读