给定别名,从ssh config获取主机名

时间:2019-12-12 13:20:31

标签: bash ssh ssh-config

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

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

是否可以从外壳通过别名解析主机名,而无需连接到主机?我的目标是:

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

1 个答案:

答案 0 :(得分:3)

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

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

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

仅出于完整性,快速而肮脏的awk解决方案

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