使用 /etc/hosts 文件中的主机名进行 ssh 隧道

使用 /etc/hosts 文件中的主机名进行 ssh 隧道

我正在尝试通过跳转框 ssh 到目标主机。以下是我的配置文件条目

Host 172.* 
   User surendra
   IdentityFile ~/.ssh/id_rsa
   ProxyCommand ssh -q -A surendra@jump nc -q0 %h %p

当我使用 IP 地址通过 SSH 连接到目标框时,此方法可行。但当我尝试使用主机名通过 SSH 连接时,此方法无效。

注意:我也在 /etc/hosts 文件中做了一个条目。

有人可以帮忙配置.ssh/config 文件,以便我可以通过查看 /etc/hosts 文件中的主机名条目,使用主机名通过 ssh 连接到目标框。

答案1

使用-W

Match exec grep %h /etc/hosts
    [...]
    ProxyCommand ssh -W  %h:%p -q -A surendra@jump

它将解析来自本地机器而不是跳转箱的主机名。

它还将检查您的主机是否在中提及/etc/hosts

答案2

解决此问题的另一种方法是在本地计算机和 jumpbox /etc/hosts 文件上创建主机名/ip 映射条目。

例如,假设您尝试代理的机器是 10.xx.yy.zz,并且您想要提供一个用户友好的名称 appserver.mycompany.com,而您的 Jumpbox 是 jumpbox.mycompany.com。

1)在本地主机 /etc/hosts 上,输入以下内容

10.xx.yy.zz appserver.mycompany.com

2)在 jumpbox 的 /etc/hosts 上,输入以下内容

10.xx.yy.zz appserver.mycompany.com

现在,你的本地计算机和 Jumpbox 都能够将用户友好名称解析为实际 IP,并且你的 ssh 代理应该可以使用以下配置

Host appserver.mycompany.com
   User surendra
   IdentityFile ~/.ssh/id_rsa
   ProxyCommand ssh -A [email protected] -W %h:%p

相关内容