ssh2连接时设置环境变量

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

设置环境变量

代码如下

1
2
3
4
5
6
7
8
9
10
11
12
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,即不允许任何环境变量设置。

写在最后

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