如何找出ssh HostName的IP


10

有没有一种简单的方法可以HostName从命令行的ssh配置中检索IP地址?很多次我不得不使用scp并且想连接到机器,但是我只记得HostName。


1
scp将读取您.ssh/config/etc/ssh/ssh_config。您是否有理由无法通过配置中定义的别名进行scp操作?
蒂姆·肯尼迪

您应该将此添加为答案。我认为当我第一次尝试时,我没有提供密钥或其他东西,因此它无法识别主机。
m33lky 2011年

似乎有点答案,但我补充了。以及我认为是一些有趣的ssh config相关阅读内容。
蒂姆·肯尼迪

Answers:


2

scp将读取您~/.ssh/config/etc/ssh/ssh_config。只要您在ssh配置中scp往返于主机别名之一的名称,它就可以正常工作。

由于这似乎只是一个答案,所以这里有一些更多信息,您可以使用ssh config进行操作...

这是一篇介绍ssh配置文件高级功能的文章:http : //magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no-臭味VPN软件/

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

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


1
简短的答案很不错。否则很容易脱离话题。任何进行隧道传输的人都应该看看shuttle
m33lky 2011年

9

host使用命令行本身hostname很容易将ssh其映射到ssh_config 条目。

您可以要求它评估并打印出用于命令行配置的内容,而无需实际连接。然后,您只需要提取列出的内容即可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
那是东西。好答案!
heisian


1

通常,您可以做得到host HostNameIP地址。

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

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


3
这不会在中查找主机别名~/.ssh/config,据我了解,这是这个问题的重点。
吉尔(Gilles)'所以

哈哈,我也注意到了。ssh HostName是任意别名,而不是域名。
m33lky 2011年

评论不作进一步讨论;此对话已转移至聊天
terdon

0

使用伪造的ProxyCommand ...

$ ssh -o 'ProxyCommand echo %h>&2' mYaLiAs 2>&1 | fgrep -v ssh_exchange_id |  read actual
$ echo $actual
192.168.1.234
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.