如何找出 ssh 主机名的 ip

如何找出 ssh 主机名的 ip

HostName有没有一种简单的方法可以从命令行上的 ssh 配置中检索 a 的 IP ?很多时候我必须使用scp并想要连接到一台机器,但我只记得主机名。

答案1

使用它本身很容易将host命令行上给出的参数映射到 ssh_config 条目。hostnamessh

您可以要求它评估并打印出它将用于命令行配置的内容,而无需实际连接。然后,您只需提取它列出的内容hostname(请注意,它通过将配置键名称转换为小写来规范化配置键名称)。一个简单的例子是:

ssh -G database | awk '/^hostname / { print $2 }'

如果 .ssh/config 包含:

Host database
Hostname database.example.com

这将打印出来database.example.com

要 ping 它,您当然可以评估输出并将其用作参数:

ping $(ssh -G database | awk '/^hostname / { print $2 }')

答案2

scp 将读取您的~/.ssh/config/etc/ssh/ssh_config。只要您在 ssh 配置中对主机别名之一进行 scp 操作,它就应该可以工作。

因为这似乎是一个简短的答案,这里有一些更多信息,说明您可以使用 ssh 配置执行的操作...

这是一篇描述 ssh 配置文件的一些高级功能的文章:http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no-stinking-vpn-software/

需要通过 http 代理建立 ssh/scp 隧道?没问题,只需使用此处概述的步骤即可:http://www.mtu.net/~engstrom/ssh-proxy.php

ProxyCommand 选项的另一种用法:http://jasonmc.wordpress.com/2008/04/16/ssh-magic/

答案3

没有必要这样做scp,但您可以使用ssh的调试跟踪。

ssh -v HostName ' ' 2>&1 | grep '^debug1: Connecting to'

答案4

通常,您可以这样做host HostName并获得 IP 地址。

如果host未安装(应该已安装),您可以使用nslookup HostName 8.8.8.8它将使用 Google DNS 服务器进行查找。

要执行这些操作,您的计算机的解析器必须具有正确的配置(在文件 /etc/resolv.conf 中,也许在 /etc/nsswitch.conf 中),或者您必须使用“完全限定的域名”,包括主机、域名和“TLD”(.org、.com、.net 之类的后缀)。

相关内容