SSH 隧道连接 转发流量数据

前言

今天突然要用到测试环境的rabbitMQ但是运维却安全为由不能开放端口,所以只能使用ssh隧道代理转发流量进行使用

SSH隧道的端口转发类型

  1. 本地端口转发:内网IP地址192.168.1.100 通过ssh连接到公网地址 172.20.9.69,当访问内网服务器的特定端口(例如:8080)则会将当前请求通过ssh转发到公网服务器的特定端口(例如:9876),从一定程度上可以理解为在本地做了一个正向代理
  2. 远程端口转发:内网IP地址192.168.1.100 通过ssh连接到公网地址 172.20.9.69,当在公网服务器中访问特定的端口(例如:8083)会将当前请求转发到内网服务器的特定端口(例如:9876)
  3. 动态端口转发也成为(SOCKS 代理):动态端口转发将您的 SSH 客户端变成SOCKS 代理服务器,通常情况下被用作跳板机。例如你本地网络访问不了:https://www.redhat.com/, 但是你公网服务器可以访问该网站,然后你就可以通过socks 代理来实现本地访问该网站。

SSH隧道代理命令参数

  • "-p":指定远程主机的端口
  • "-C": 允许压缩数据,这在主要代理基于文本的信息(如网页浏览)时加快隧道速度,但在代理二进制信息(如下载文件)时会减慢速度。
  • "-N": 不执行远程指令
  • "-L": 使用本地端口转发,将本地机(客户机)的某个端口转发到远端指定机器的指定端口
  • “-R”: 使用转成端口转发,将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
  • "-f": 后台执行ssh命令
  • "-D": 指定动态端口转发(SOCKS 代理),1080是标准的 SOCKS 端口。尽管您可以使用任何端口号,但某些程序只有在您使用1080 时才能运行.

例子

注意!!!如果是在docker环境中执行,程序执行的时候就需要连接容器的ip地址,否则会连接不上。因为端口转发都不是在本设备开启~
# 转发目标机器的 5672 端口到 本地 5672
# 反向转发 格式为: <远程机端口>:<本地机群>:<端口>
 ssh front@1.1.1.1 -p 9800 -fNL 5672:1.1.1.1:5672

添加新评论

文章状态:已收录~