参考:
https://www.zsythink.net/archives/2450
https://luckyfuture.top/ssh-tunnel#SSH%E9%9A%A7%E9%81%93
https://zhuanlan.zhihu.com/p/561589204?utm_id=0
SSH隧道(搭建SSH隧道绕过防火墙):
ssh命令除了登陆外还有代理转发功能
SSH 隧道是 SSH 中的一种机制,它能够将其他 TCP 端口的网络数据通过 SSH 连接来转发,并且自动提供了相应的加密及解密服务。因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输,因此这一过程也被叫做“隧道”(tunneling)。
SSH 隧道也可以叫做端口转发
SSH 隧道能够提供两大功能:
1)加密 SSH Client 端至 SSH Server 端之间的通讯数据。
2)突破防火墙的限制完成一些之前无法建立的 TCP 连接
SSH一共提供了3种端口转发,分别是本地转发(-L参数)、远程转发(-R参数)和动态转发(-D参数)
-C:压缩传输,提高传输速度。
-f:将SSH传输转人后台执行,不占用当前的Shell。
-N:建立静默连接(建立了连接,但是看不到具体会话)。
-g:允许远程主机连接本地用于转发的端口。
-L:本地端口转发。
-R:远程端口转发
-D:动态转发(socks代理)
-P:指定SSH端口
例子:
ssh -p 31022 -NL 7860:192.168.1.1;7860 root@183.3.145.12
SSH隧道,它通过加密和安全地传输数据。通过这个隧道,可以在本地机器和远程服务器之间建立一个安全的通信通道。
具体来说,这个命令中的参数-NL表示创建本地端口转发。它将本地机器的7860端口与远程服务器的192.168.1.1:7860端口进行连接。实际上,当本地机器收到对本地7860端口的请求时,请求将被转发到远程服务器的192.168.1.1:7860端口。
通过这个隧道建立的通信是安全的,因为SSH使用了加密来保护数据的传输。这意味着在本地机器和远程服务器之间传输的数据被加密,只有具有正确密钥的两端才能解密和读取数据
或:
ssh -L 9906:10.1.0.2:3306 root@10.1.0.2
上述命令表示从本机(ServerA)建立一个到ServerB(10.1.0.2)的ssh隧道,使用本地端口转发模式,监听ServerA本地的9906端口,访问本机的9906端口时,通讯数据将会被转发到ServerB(10.1.0.2)的3306端口。