给定别名,从 ssh 配置中获取主机名

Given the alias, get the HostName from ssh config

我有一个 SSH 配置文件,例如:

Host myAlias
  HostName the.actual.host.name.com

是否可以从别名、shell 解析主机名而不连接到主机?我的目标是:

$ <something> myAlias
the.actual.host.name.com

虽然可以使用简单的 awk 脚本解析 ~/.ssh/config,但它可能不适用于任意配置文件,它可能有各种块等。请考虑使用'ssh -G',它将转储 ssh 会话的参数,然后提取主机名属性

ssh -G myAlias | awk ' == "hostname" { print  }'

请注意,这具有支持所有 ssh 配置源(本地配置、命令行、全局配置、环境变量等)的优势。

只是为了完整性,快速而肮脏awk解决方案

awk -v H="myAlias" '
tolower() == "host" { m= == H }
tolower() == "hostname" && m{ print  }
' ~/.ssh/config