参考: 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

1、 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端口

-NL 和 -NR 是端口转发的两种方向,分别代表了本地到远程、远程到本地两种隧道传输方式

例子:

ssh -p 31022 -NL 7860:192.168.1.1:7860 root@18***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端口。

ssh软件一般也有入口:

2、本地电脑局域网内网穿透外网访问

参考:https://www.youtube.com/watch?v=4kCQICjI298 上图总体框架步骤解释: 1、内网电脑最左,有个服务比如起个文件服务器python -m http.server,这里起的8000端口

2、公网服务器中间,这里用的阿里云服务器,打开终端开启9999 tcp端口,然后打开sshd相关服务

echo "GatewayPorts yes" >> /etc/ssh/sshd _config

echo "AllowTcpForwarding yes”>> /etc/ssh/sshd _config

systemctl restart sshd

另外:netstat -anp |grep 9999 可以查看端口监听情况

3、然后在最左电脑创建ssh隧道 9999是中间远程服务器端口,127.0.0.1:8000本地静态服务器端口,root@8****4 -p 22是远程服务器外网公开ip和端口

ssh -NR 9999:127.0.0.1:8000 -f root@8****4 -p 22

4、外部其他电脑最右,就可以输入中间远程服务器ip加端口转发到的9999端口进行访问本地

8****4:9999

文章来源

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。