是否可以在命令行中查询~/.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
在评估后打印其配置Host
并Match
阻止并退出。
所以对于这个例子,我们会使用
ssh -G $host | awk '$1 == "hostname" { print $2 }'
如果您确实需要 IP 地址而不是主机名,则可能需要对结果进行名称查找,但我假设您知道如何执行此操作。
ProxyCommand
请注意,例如,如果配置用于通过跳转主机进行连接,则这可能不是进行传出连接的实际主机。
答案4
您提到的文件是一个文本文件,它包含主机名并且可能IP地址识别您连接到的机器。可以使用该命令将主机名解析为 IP 地址host(1)
。格式非常简单,因此不难找出其中的内容。请注意,可以在文件中使用通配符(我的 states *.fedoraproject.org
)。