- 客户端(**`内网主机`**)通过`ssh`连接公网服务器(如**服务器**)时,称为`正向隧道`;
- 公网服务器(例如**服务器**)通过ssh连接客户端(**`内网主机`**)时,称为`反向隧道`。
反向SSH端口转发指定将远程服务器主机上的给定端口转发到本地端的给定主机和端口。
-L 是本地隧道(您 <-- 客户端)。如果某个站点被阻止,可以将流量转发到您拥有的服务器并查看它。例如,如果 imgur 在工作中被阻止,您可以执行 ssh -L 9000:imgur.com:80 user@example.com。转到您计算机上的 localhost:9000,将使用您的其他服务器加载 imgur 流量。
-R 是远程隧道(您 --> 客户)。可以将流量转发到其他服务器以供其他人查看。与上面的例子类似,但方向相反。
我们将使用一个名为 ss 的工具来调查主机上运行的套接字。
如果我们运行 ss -tulpn 它会告诉我们正在运行哪些套接字连接
-t 显示 TCP 套接字|
-u 显示 UDP 套接字|
-l 仅显示监听套接字|
-p 使用插座显示该过程|
-n 无法解析服务名称|
情景:
在拿到shell后得知 Jenkins服务运行在内网172.17.0.2:8080
但我们无法直接访问内网,所以可以用ssh建立反向隧道
ssh -L 8080:172.17.0.2:8080 aubreanna@<ip>
然后访问127.0.0.1:8080即可