SSH隧道tunneling端口转发

简介:

   SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是,SSH 还能够将其他 TCP 端口的网络数据通过SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”(tunneling),这是因为 SSH 为其他TCP 链接提供了一个安全的通道来进行传输而得名。

例如,Telnet,SMTP,LDAP 这些 TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果工作环境中的防火墙限制了一些网络端口的使用,但是允许 SSH的连接,也能够通过将 TCP 端口转发来使用 SSH 进行通讯


SSH 端口转发能够提供两大功能:

 加密 SSH Client 端至 SSH Server 端之间的通讯数据

 突破防火墙的限制完成一些之前无法建立的 TCP 连接


现在来模拟一场景来演示过程

1.png

DEMO公司在内部有一台公司WEB服务器C,因为上面的内容是公司内部相关的,因此,只允许通过内部的B机器(代理服务器)进行访问。如果员工A想访问这台WEB服务器,只能经过防火墙认证过滤后进入内网B进行访问。


C机器上使用iptables进行策略部署

#iptables -A INPUT -s 192.168.4.101 -j ACCEPT  

#iptables -A INPUT -s 192.168.4.100 -j REJECT

#iptables -vnL

Chain INPUT (policy ACCEPT 53 packets, 4347 bytes)

pkts bytes target     prot opt in     out     source               destination

0     0 ACCEPT     all  --  *      *       192.168.4.101        0.0.0.0/0

0     0 REJECT     all  --  *      *       192.168.4.100        0.0.0.0/0           reject-with icmp-port-unreachable


验证

A上面直接访问C机器,无法连接

#curl http://192.168.4.113

curl: (7) couldn't connect to host


B上面直接访问C机器,可以正常打开网页服务

#curl http://192.168.4.113

<h1>Apache 2 Test Page powered by CentOS</h1>


使用ssh隧道技术进行解决此问题


方案一

本地转发

语法格式:

-L localport:remotehost:remotehostport sshserver

-L 本地端口:远程主机地址:远程主机开放端口 中转主机地址

 选项:

-f 后台启用

-N 不打开远程shell,处于等待状态

-g 表示ssh隧道对应的转发端口将监听在主机的所有IP中,不使用"-g选项"时,转发端口默认只监听在主机的本地回环地址中,"-g"表示开启网关模式,远程端口转发中,无法开启网关功能


  1. A上面设置本地端口转发


#ssh -L 1314:192.168.4.113:80 192.168.4.101 -Nf

当访问本机的1314的端口时,被加密后转发到192.168.4.101的ssh服务,再解密被转发到192.168.4.113:80

#ss -nl

LISTEN     0      128                                       127.0.0.1:1314


在B机器上可以看到连接了                                          *:*

#ss -nt

ESTAB      0      0                        192.168.4.101:22                                   192.168.4.100:42678


2.在A上进行访问网站

#curl http://127.0.0.1:1314

<h1>Apache 2 Test Page powered by CentOS</h1>

成功返回网页内容


3.在C机器上面看到的是B的连接

#ss -nt

ESTAB 0      1                              ::ffff:192.168.4.113:80                            192.168.4.101:60500


在这个场景里,A是ssh客户端,B是ssh服务器端



方案二

远程转发

语法格式:

-R sshserverport:remotehost:remotehostport sshserver

-R 本地端口:远程主机地址:远程主机开放端口 中转主机地址

 选项:

-f 后台启用

-N 不打开远程shell,处于等待状态

-g 表示ssh隧道对应的转发端口将监听在主机的所有IP中,不使用"-g选项"时,转发端口默认只监听在主机的本地回环地址中,"-g"表示开启网关模式,远程端口转发中,无法开启网关功能


1.在B上面设置远程端口转发

#ssl -R 1314:192.168.4.113:80 192.168.4.100 -Nf

-R让192.168.4.100侦听1314端口的访问,如有访问,就加密后通过ssh服务转发请求到本机192.168.4.101ssh客户端,再由本机解密后转发到192.168.4.113:80


A上面能看到B访问A的22端口

#ss -nt

ESTAB      0      0                                     192.168.4.100:22                                 192.168.4.101:45830


2.在A上进行访问网站

#curl http://127.0.0.1:1314

<h1>Apache 2 Test Page powered by CentOS</h1>

成功返回网页内容


3.在C机器上面看到的是B的连接

#ss -nt

FIN-WAIT-1 0      1                              ::ffff:192.168.4.113:80                        ::ffff:192.168.4.101:50934


在这个场景里,B是ssh客户端,A是ssh服务器端


动态端口转发

作为一名技术人员,翻阅英文原版资料是必须的。有些情况确实是需要向外界查找一些学习资料。

1.png


语法:

ssh -D 1080 远程主机地址

当用浏览器访问internet时,本机的XXX端口做为代理服务器,firefox的访问请求被转发到sshserver上,由sshserver替之访问internet


1.在A上面启用动态端口转发至B机器上

#ssh -D 1888 192.168.4.101 -Nf


2.在A机器上面指定使用socks5 访问

#curl --socks5 127.0.0.1:1888 http://192.168.4.113

<img src="./google.png"></img>


通过Firefox访问。如果是Windows机器,可以考虑安装一个openssh for windows 3.81p,2.5MB

https://sourceforge.net/projects/sshwindows

1.png2.png


本文转自 ljpwinxp 51CTO博客,原文链接:http://blog.51cto.com/191226139/2061833


相关文章
|
10月前
|
安全 Linux 网络安全
【超详细】Linux系统修改SSH端口教程
在linux中,默认的SSH端口号为22,由于这是咱们都知道的端口号,一旦有入侵者进行端口扫描的时候扫描出22端口,就立马知道这是进行SSH登录的端口号,因而咱们需要修改默认的端口号。
4252 1
【超详细】Linux系统修改SSH端口教程
|
安全 Linux 网络安全
上手Linux:禁用 root 用户,修改22端口,使用 ssh 登录
本文介绍了在 linux 系统中,如何禁用 root 用户登录,修改默认的 22 端口号,以及设置只能使用 SSH 秘钥登录的方式,从而在一定程度上提高了系统的安全性。
938 0
|
安全 关系型数据库 MySQL
Mysql SSH隧道连接使用方法
Mysql SSH隧道连接使用方法
1339 0
|
网络协议 网络安全 数据安全/隐私保护
三种不同类型的ssh隧道
想通过ssh隧道连接远端机器的VNC服务,对ssh -L命令不太熟悉,man ssh后发现3组与隧道(turnnel)相关的参数:ssh -D,ssh -L,ssh -R,一下子就搞糊涂了,所有下决心仔细研究一番。 何谓SSH隧道 隧道是一种把一种网络协议封装进另外一种网络协议进行传输的技术。这里我们研究ssh隧道,所以所有的网络通讯都是加密的。又被称作端口转发,因为ssh隧道通常会绑定一个本地端口,所有发向这个端口端口的数据包,都会被加密并透明地传输到远端系统。 SSH隧道的类型 ssh隧道有3种类型: 动态端口转发(Socks 代理) 本地端口转发 远端端口转发 动态端口转发
569 0
|
3月前
|
安全 Ubuntu 网络安全
百度搜索:蓝易云【ssh端口转发教程】
这些是SSH端口转发的基本步骤。您可以根据您的需求和情况进行进一步的调整和配置。请确保在执行任何与网络连接相关的操作之前,充分了解您的网络环境和安全需求,并采取适当的安全措施。
56 0
|
7月前
|
Linux 网络安全 网络架构
百度搜索:蓝易云【Linux系统修改ssh端口教程。】
请注意,修改SSH端口是一种安全措施,可以减少恶意扫描和攻击的风险。但是,确保您选择的新端口未被其他服务使用,并且仅将其公开用于必要的连接。
620 0
|
9月前
|
网络协议 JavaScript Linux
一文彻底搞懂ssh的端口转发
端口转发是突破网络域隔离的一个手段。在学习这个知识的时候需要不断自问
1751 0
|
11月前
|
安全 网络安全
SSH隧道端口转发详解
需要在目标主机修改如下配置文件内容
253 0
|
域名解析 网络协议 安全
【内网安全-隧道技术】SMB、ICMP、DNS隧道、SSH协议
【内网安全-隧道技术】SMB、ICMP、DNS隧道、SSH协议
637 0
【内网安全-隧道技术】SMB、ICMP、DNS隧道、SSH协议
|
运维 关系型数据库 MySQL
利用腾讯云主机+SSH远程端口转发实现内网穿透
利用腾讯云主机+SSH远程端口转发实现内网穿透
523 0
利用腾讯云主机+SSH远程端口转发实现内网穿透