在本地端口转发中,哪个 DNS 服务器解析 的名称internal_db.local
?
那是内部 SSH 服务器的 DNS 吗? (这就是我的想法)
或者是外部 DNS 服务器分配sshgateway.com
其地址?
例如:
ssh -L 4000:internal_db.local:3306 [email protected]
答案1
SSH 中的端口转发涉及本地 IP、本地端口、远程 IP、远程端口和目的地。如:
ssh -L $LOCAL_IP:$LOCAL_PORT:$REMOTE_IP:$REMOTE_PORT $DESTINATION
$LOCAL_IP
在此示例中,和的 DNS 名称$DESTINATION
由命令运行的环境解析ssh
。的 DNS 名称$REMOTE_IP
由 处的环境解析$DESTINATION
。
答案2
ssh 中端口转发的完整顺序是
-L [<local_ip>:]<local_port>:<remote_ip>:<remote_port>
可以省略 local_ip。
(或 DNS名称<local_ip>
)将由本地主机解析,而<remote_ip>
(或 DNS 名称)将由远程主机(在您的情况下为 sshgateway.com)解析。
根据您的评论进行编辑:
如果我不明白,请纠正我。
您的环境如下所示:
host_1 -> host_2 -> host_3
your_PC -> sshgateway -> internal_db.local
您想要从 host_1 连接到位于 host_3 上的数据库。
通过建议的本地端口转发,您可以将 host_1 的端口 4000 通过 host_2 转发到 host_3 的端口 3306。
为此,您的连接将通过 ssh 从 host_1 到 host_2 建立隧道,然后作为普通 ip 数据包从 host_2 发送到 host_3,就好像 host_2 将连接到数据库一样。
因此,host_2 (sshgateway.com) 必须使用其 DNS 服务器解析 host_3 (internal_db.local) 的 IP 地址。
希望这能解答您的疑问。