为给定的 SSH 主机设置变量

为给定的 SSH 主机设置变量

在中ssh_config,可以选择使用 将一些环境变量导出到主机SendEnv

是否还有一种方法可以强制每个主机指定此变量的值?例如,是否可以仅在连接到主机时导出$FOO带有值的变量?barexample.com

答案1

你不能给出具体的价值对于中的环境变量ssh_config,但您当然可以将现有的环境变量仅发送给特定主机。

Host example.com
    SendEnv FOO

完成链条:

FOO=bar ssh [email protected]

AcceptEnv最后,远程服务器必须在其 中列出环境变量sshd_config

AcceptEnv FOO

答案2

您可以使用来指定特定值SetEnv~/.ssh/config例如

Host *
  SetEnv FOO=bar

按照man ssh_config

直接指定要发送到服务器的一个或多个环境变量及其内容。与 类似SendEnv,服务器必须准备好接受环境变量。

假设你的服务器收到以下行/etc/ssh/sshd_config

AcceptEnv LANG LC_* FOO

另请检查:man ssh_configman sshd_config

答案3

您可以使用 .ssh/config 文件设置每个主机的配置值。例如:

Host example.com
SendEnv FOO

请注意服务器也必须支持它。

答案4

另一个想法是在 ssh 命令中设置环境变量并运行交互式 shell,例如我尝试使用环境变量“MANWIDTH”调用交互式 shell:

ssh example.com 'MANWIDTH=120 bash -li'

相关内容