为给定的SSH主机设置变量


Answers:


16

您不能在中为环境变量指定特定的ssh_config,但是您可以将现有环境变量仅发送给特定的主机。

Host example.com
    SendEnv FOO

要完成链:

FOO=bar ssh user@example.com

最后,远程服务器必须在列出的环境变量AcceptEnvsshd_config

AcceptEnv FOO

您到底想避免什么?
迈克尔·汉普顿

1
必须发送别名才能发送具有给定值的变量。
ℝaphink

抱歉,您无能为力...除非您能使计算机读懂您的想法。:)
迈克尔·汉普顿

6
谢谢确认了我的怀疑,虽然;-)什么我都喜欢将有些像SetVar FOO='bar'ssh_config;)
ℝaphink

2
对我而言,经常出现的情况是旧系统不支持,TERM=tmux-256color因此我希望每台远程主机(使用通配符)进行回退。
杰德(Jed)

4

您可以通过使用给出一个具体的数值SetEnv在你的~/.ssh/config,如

Host *
  SetEnv FOO=bar

按照man ssh_config

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

假设您的服务器中包含以下行/etc/ssh/sshd_config

AcceptEnv LANG LC_* FOO

另请检查:man ssh_configman sshd_config


2
迷惑的读者请注意(像我本人一样,当我第一次阅读本文时):这是自2018年8月发布的OpenSSH 7.8以来的新功能,并且需要一段时间才能通过操作系统更新将其提供给普通用户。(但是一旦它变得普遍起来,它将是迄今为止解决该问题的最佳方法)
Irfy

1

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

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

0

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

Host example.com
SendEnv FOO

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.