ssh2连接时设置环境变量

· 1 min read

使用nodejs ssh2客户端连接服务器时可以设置环境变量吗,经过调查发现是可以的,这里Mark下。

设置环境变量

代码如下

this.conn.shell({
        env: {
          X_LOGIN_IP: '128.1.1.123',
          X_ENVIRONMENT_VARIABLE: "desiredvalue"
        }, term: 'xterm-256color', // term: 'dumb',
        cols: connectOpts.cols, rows: connectOpts.rows,
      }, (err, s) => {
        if (err) {
          console.log('ssh shell error', err);
          throw err;
   }    
})

局限性

这个环境变量是受限于/etc/ssh/sshd_config中是否允许指定规则变量设置,不同系统,默认允许的环境变量设置不同。

如果需要开放指定变量,设置指令是 AcceptEnv。例子如下,即支持设置X_前缀的环境变量

https://static.1991421.cn/2024/2024-08-20-160215.jpeg

默认支持设置的环境变量

正如上述所说不同系统,默认设置不同。

  • Ubuntu默认为AcceptEnv LANG LC_*
  • Debian默认为AcceptEnv LANG LC_*
  • CentOS9默认未设置AcceptEnv,即不允许任何环境变量设置。

写在最后

关于客户端进行环境变量设置,你需要了解的就这些了。