从文件读取主机名的 SSH 配置

从文件读取主机名的 SSH 配置

设置如下:

  • 本地电脑我想要通过 ssh 进入…
  • 网关节点gateway这是一个中间节点,仅用于 ssh 进入……
  • 前端节点front,再次是一个中间节点,需要通过 ssh 进入最终…
  • 计算节点,这是我真正想要使用的节点

我想设置我的本地 ssh 配置,以便我可以直接输入ssh compute

问题:与 和 不同gatewayfront计算节点的主机名不是静态的(即它可能在一天内更改多次)。我有一个脚本,compute_node_hostname.sh它将front输出计算节点的名称,即node339。如何在我的配置中使用它?

以下对计算节点进行硬编码的简单配置确实有效:

Host gateway front compute
    User …
    IdentityFile ~/.ssh/id_rsa

Host front
    HostName front
    ProxyJump gateway

Host compute
    HostName node339
    ProxyJump front

约束:我无法RemoteCommand在我的配置中使用

答案1

回想一下,“ProxyJump”是“ProxyCommand”的更智能版本——它通过复制 CLI 中指定的选项做了一些额外的工作,但本质上它与以下内容相同:

Host compute
    ProxyCommand ssh -W %h:%p front

其中%h%p自动扩展为请求的主机名和端口。

因此,使用动态主机名的方法是替换参数%h

Host compute
    ProxyCommand ssh -W $(compute_node_hostname.sh):%p front

注意:如果节点具有不同的主机密钥,则此方法无法正常工作。由于您正在通过远程网络上的另一个主机进行连接,因此禁用此跳转的主机密钥验证应该是安全的。

相关内容