设置如下:
- 本地电脑我想要通过 ssh 进入…
- 网关节点
gateway
这是一个中间节点,仅用于 ssh 进入…… - 前端节点
front
,再次是一个中间节点,需要通过 ssh 进入最终… - 计算节点,这是我真正想要使用的节点
我想设置我的本地 ssh 配置,以便我可以直接输入ssh compute
。
问题:与 和 不同gateway
,front
计算节点的主机名不是静态的(即它可能在一天内更改多次)。我有一个脚本,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
注意:如果节点具有不同的主机密钥,则此方法无法正常工作。由于您正在通过远程网络上的另一个主机进行连接,因此禁用此跳转的主机密钥验证应该是安全的。