HostName
有没有一种简单的方法可以从命令行上的 ssh 配置中检索 a 的 IP ?很多时候我必须使用scp
并想要连接到一台机器,但我只记得主机名。
答案1
使用它本身很容易将host
命令行上给出的参数映射到 ssh_config 条目。hostname
ssh
您可以要求它评估并打印出它将用于命令行配置的内容,而无需实际连接。然后,您只需提取它列出的内容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 之类的后缀)。