小编Dav*_* B.的帖子

如何从 SSH 配置文件中的可执行脚本中获取主机名?

我经常需要从特定集群(集群中的所有机器都相同)通过 ssh 连接到任意计算机。但是,集群中的可用机器集经常更改,因此我有一个脚本可以从集群中返回一个任意主机名,该主机名可用并符合我的要求(例如,在线并运行正确的操作系统)。

另请注意,我使用 Kerberos (GSSAPIAuthentication) 凭据转发进行身份验证。

现在,我 ssh 使用ssh `get_host`. 我想改为执行ssh cluster. 使用已知的主机名,这很容易在以下内容中进行/ssh/config

Host cluster
    HostName static_host.cluster.domain.tld
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials yes
Run Code Online (Sandbox Code Playgroud)

如何HostName使用我的脚本动态选择?(或者 SSH 是否有不同的方法来支持我想要的功能?)我想做类似以下的事情,但它不起作用:

Host cluster
    HostName `get_host`   # This does not work
    ...
Run Code Online (Sandbox Code Playgroud)

Grawity表明ProxyCommand可以是一个脚本,它获取主机名并ssh使用netcat或将连接转发给它socat。但是,这不会转发 Kerberos 凭据。对此的帮助也表示赞赏。

编辑:

您不能像我希望的那样使用 Kerberos 执行此操作(请参阅已接受答案中的评论)。所以,我使用这个脚本ssh-wrapper作为ssh别名对ssh命令行参数进行动态重写。它并不健壮,但对我有用。

Host cluster
    HostName static_host.cluster.domain.tld
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials yes
Run Code Online (Sandbox Code Playgroud)

ssh

10
推荐指数
1
解决办法
3780
查看次数

标签 统计

ssh ×1