OpenSSH - 将 ~/.ssh/config 中的别名映射到命令行中的 IP 地址

OpenSSH - 将 ~/.ssh/config 中的别名映射到命令行中的 IP 地址

是否可以在命令行中查询~/.ssh/config?假设我想在单独的程序中检索特定别名指向的 IP 地址,这可能吗?

答案1

如果我知道您只想返回 IP 地址,即 192.168.1.1,那么这是从命令行查询文件的一种(极其脆弱)方法,前提是您有适当的权限来读取该文件你的.ssh/config格式一致:

awk '/Host $youralias/ {getline; print $2}' .ssh/config


我发布此内容只是因为我想了解如何使用awk它来执行此操作,但显然我的知识非常有限。

答案2

不太确定你在问什么......

假设您有“mainserver”的 SSH 别名,那么您可以执行以下操作ssh mainserver。如果您希望它也适用于ping mainserver,您需要在 中添加一个别名/etc/hosts,如下所示:

/etc/主机:

192.168.0.1 comp-one
192.168.0.2 comp-two

192.168.0.20 mainserver

然后你就可以这样做ping mainserver,它会 ping 通 192.168.0.20。

答案3

您可以使用该-G选项ssh

-G:导致ssh在评估后打印其配置HostMatch阻止并退出。

所以对于这个例子,我们会使用

ssh -G $host | awk '$1 == "hostname" { print $2 }'

如果您确实需要 IP 地址而不是主机名,则可能需要对结果进行名称查找,但我假设您知道如何执行此操作。

ProxyCommand请注意,例如,如果配置用于通过跳转主机进行连接,则这可能不是进行传出连接的实际主机。

答案4

您提到的文件是一个文本文件,它包含主机名并且可能IP地址识别您连接到的机器。可以使用该命令将主机名解析为 IP 地址host(1)。格式非常简单,因此不难找出其中的内容。请注意,可以在文件中使用通配符(我的 states *.fedoraproject.org)。

相关内容