【发布时间】:2023-04-01 01:39:01
【问题描述】:
服务,例如 FTP 服务器,只接受来自特定网络的连接,所有用户都将拥有相同的外部 IP 地址。
我想连接到此服务,但我目前不在允许的网络内。
我可以通过 ssh 访问网络内的服务器。
如何使用 ssh 将某个端口从我的本地机器,通过内部网络上的机器,到最终服务,以便任何打开正确端口的客户端都不会注意到任何差异?
【问题讨论】:
标签: ssh-tunnel
服务,例如 FTP 服务器,只接受来自特定网络的连接,所有用户都将拥有相同的外部 IP 地址。
我想连接到此服务,但我目前不在允许的网络内。
我可以通过 ssh 访问网络内的服务器。
如何使用 ssh 将某个端口从我的本地机器,通过内部网络上的机器,到最终服务,以便任何打开正确端口的客户端都不会注意到任何差异?
【问题讨论】:
标签: ssh-tunnel
您可以使用以下命令创建通往特定网络的 SSH 隧道。 例如,假设您想访问计算机“mywebserver”(端口 80)上的 Web 服务。
ssh -f mysshserver -L 1234:mywebserver:80 -N
这将在本地端口 1234 和端口 80 上的远程 Web 服务器之间打开一个 SSH 隧道。然后您可以打开 Web 浏览器并通过在地址栏中键入“http://localhost:1234”直接连接到您的 Web 服务器。
【讨论】:
REMOTE_PORT=8080; LOCAL_PORT=1234; REMOTE_URL=somedomain.com; ssh -f localhost -L ${LOCAL_PORT}:${REMOTE_URL}:${REMOTE_PORT} -N; curl http://localhost:${LOCAL_PORT} | wc -l; ssh ${REMOTE_URL} "curl http://localhost:${REMOTE_PORT}" | wc -l; I 除了两个 curls 以提供相同的输出,但第一个在 60 秒超时后一起失败,而第二个返回 29 行。运行本地 nmap 显示 ${LOCAL_PORT} 已打开。