AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 482907
Accepted
raphink
raphink
Asked: 2013-02-27 23:19:42 +0800 CST2013-02-27 23:19:42 +0800 CST 2013-02-27 23:19:42 +0800 CST

为给定的 SSH 主机设置变量

  • 772

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

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

ssh
  • 6 6 个回答
  • 32697 Views

6 个回答

  • Voted
  1. Best Answer
    Michael Hampton
    2013-02-27T23:30:29+08:002013-02-27T23:30:29+08:00

    您不能为 中的环境变量指定特定值ssh_config,但您当然可以只将现有环境变量发送到特定主机。

    Host example.com
        SendEnv FOO
    

    要完成链:

    FOO=bar ssh [email protected]
    

    最后,远程服务器必须AcceptEnv在其sshd_config.

    AcceptEnv FOO
    
    • 24
  2. kenorb
    2019-06-13T03:47:25+08:002019-06-13T03:47:25+08:00

    SetEnv您可以通过在您的中使用来给出特定的值~/.ssh/config,例如

    Host *
      SetEnv FOO=bar
    

    根据man ssh_config:

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

    假设您的服务器中有以下行/etc/ssh/sshd_config:

    AcceptEnv LANG LC_* FOO
    

    还要检查:man ssh_config和man sshd_config。

    • 17
  3. user156525
    2013-02-27T23:39:36+08:002013-02-27T23:39:36+08:00

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

    Host example.com
    SendEnv FOO
    

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

    • 1
  4. huch
    2019-01-11T01:05:14+08:002019-01-11T01:05:14+08:00

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

    ssh example.com 'MANWIDTH=120 bash -li'
    
    • 1
  5. Stephen Quan
    2020-11-20T19:21:40+08:002020-11-20T19:21:40+08:00

    我想强调SendEnv / AcceptEnv答案和触发它的不同方式。

    user1@host1 $ export LC_SECRET="pencil"
    user1@host1 $ export LC_MAGIC="xyzzy"
    user1@host1 $ ssh -o "SendEnv LC_*" user2@host2
    user2@host2 $ echo $LC_SECRET
    pencil
    user2@host2 $ echo $LC_MAGIC
    xyzzy
    

    这里发生的事情是我们声明了名为LC_SECRETand的环境变量LC_MAGIC。LC_SECRET我们已请求LC_MAGIC使用SendEnv. 远程主机将接受它,因为它在 中具有以下规则/etc/ssh/sshd_config:

    AcceptEnv LANG LC_*
    

    这显然是对自动接受LANG环境变量或任何以 .开头的环境变量的远程系统的利用LC_。

    因此,为什么我将我的变量命名为LC_SECRETand LC_MAGIC。

    如果你想正确地做到这一点,远程系统将需要sudo访问权限,以便你修改/etc/ssh/sshd_config以附加其他环境变量。

    • 0
  6. BacLuc
    2022-02-04T03:21:49+08:002022-02-04T03:21:49+08:00

    要发送与 shell 中的 env 值不同的 env 变量值:

    Host host
        ProxyCommand ENV=value ssh -W [%h]:%p
        SendEnv ENV
    
    • 0

相关问题

  • 如何最好地设置 ssh 隧道以访问远程网络 (Linux)

  • SSH 和重定向

  • 通过 SSH 会话使用 NET USER 命令拒绝访问

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve