有没有一种简单的方法可以HostName
从命令行的ssh配置中检索IP地址?很多次我不得不使用scp
并且想连接到机器,但是我只记得HostName。
有没有一种简单的方法可以HostName
从命令行的ssh配置中检索IP地址?很多次我不得不使用scp
并且想连接到机器,但是我只记得HostName。
Answers:
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/
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 }')
不需要这样做scp
,但是您可以使用ssh
的调试跟踪。
ssh -v HostName ' ' 2>&1 | grep '^debug1: Connecting to'
通常,您可以做得到host HostName
IP地址。
如果host
未安装(应该安装),则可以使用nslookup HostName 8.8.8.8
它将使用Google DNS服务器进行查找。
要执行这些操作,您的计算机的解析器必须具有正确的配置(在文件/etc/resolv.conf中,也许在/etc/nsswitch.conf中),或者您必须使用带有主机的“完全合格的域名”, domaiin和“ TLD”(后缀为.org,.com,.net)。
~/.ssh/config
,据我了解,这是这个问题的重点。
HostName
是任意别名,而不是域名。
.ssh/config
和/etc/ssh/ssh_config
。您是否有理由无法通过配置中定义的别名进行scp操作?