双隧道技术:远程协作与端口转发的实战指南

本文详细介绍了如何通过SSH反向隧道和本地端口转发实现远程协助,解决同事在现场无法直接访问内网机器的问题,包含具体命令示例和Web应用访问方案。

双隧道协助困境中的同事

场景描述

当你正在办公室埋头处理报告时,接到现场同事的求助电话:他遇到了一台难以攻破的机器,需要你的帮助。虽然同事拥有出站互联网访问权限,但典型的网络环境限制导致无法直接访问他的机器。此时,通过SSH隧道技术直接连接他的设备进行演示将成为最佳解决方案。

配置步骤

建立反向SSH隧道

首先需要确保你的防火墙设置了端口转发规则,将外部端口映射到你的机器。同事通过以下命令建立连接:

1
ssh -R 2222:localhost:22 robin@1.2.3.4

此命令实现从他的机器SSH到你的机器,并将其22端口转发到你机器的2222端口。选择2222端口的原因:非root用户无法打开1025以下端口,且22端口通常已被本地SSH服务占用。

连接同事机器

现在你可以通过本地2222端口SSH到同事的机器:

1
ssh -p 2222 gav@localhost

此时你已以他的身份连接到目标机器。使用screen命令(可通过Hak5了解基础用法)配合-x参数,可实现双方共享同一终端会话的协同工作模式。

Web应用浏览方案

方案一:反向隧道转发

若同事发现需要检查的Web应用(位于10.1.1.2),可通过新建隧道转发80端口:

1
ssh -R 8000:10.1.1.2:80 robin@1.2.3.4

方案二:本地端口转发

Alternatively, 通过建立到同事的新连接实现本地端口转发:

1
ssh -L 8000:10.1.1.2:80 gav@localhost

两种方案均可通过访问localhost:8000查看Web应用。若Web服务器使用虚拟主机,只需在/etc/hosts中添加域名映射到127.0.0.1,即可通过vhost.name:8000访问。

该方法同样适用于转发远程桌面、数据库等任意端口。

技术总结

这种双隧道方案有效实现了外部用户到内部网络的权限映射。虽然存在其他实现方式,但该方法在理解端口映射关系后操作简单,且所有数据传输均加密,提供了安全的工作通道。

注意:若出站22端口被阻断,可将SSH服务改为监听80或443端口。仅检查端口号的出站规则通常会放行此类流量,但深度包检测可能仍会阻断连接。

致谢

感谢Gavin提供本文灵感并协助测试验证方案可行性。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计