最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

端口转发原理和使用端口转发原理和使用方法

来源:动视网 责编:小OO 时间:2024-12-23 15:20:30
文档

端口转发原理和使用端口转发原理和使用方法

0x00ssh支持的通用端口转发。一般我们使用ssh来远程登录主机,在上面执行命令.但是ssh还有portforward的功能,关于ssh的portforward的详细命令,可以看命令的man输出.本文主要对sshportforwarding的工作原理进行介绍。ssh的通用端口转发分为localforward(本地端口转发),remoteforward(远端端口转发),dynamicforward(动态端口转发).还有X11forward也是属于端口转发的一种,但是其是特殊用途的,不在这儿讨论。0x01ssh中的client和server。
推荐度:
导读0x00ssh支持的通用端口转发。一般我们使用ssh来远程登录主机,在上面执行命令.但是ssh还有portforward的功能,关于ssh的portforward的详细命令,可以看命令的man输出.本文主要对sshportforwarding的工作原理进行介绍。ssh的通用端口转发分为localforward(本地端口转发),remoteforward(远端端口转发),dynamicforward(动态端口转发).还有X11forward也是属于端口转发的一种,但是其是特殊用途的,不在这儿讨论。0x01ssh中的client和server。


端口转发原理和使用-端口转发原理和使用方法
0x00ssh支持的通用端口转发
一般我们使用ssh来远程登录主机,在上面执行命令.但是ssh还有portforward的功能,关于ssh的portforward的详细命令,可以看命令的man输出.本文主要对sshportforwarding的工作原理进行介绍.
ssh的通用端口转发分为localforward(本地端口转发),remoteforward(远端端口转发),dynamicforward(动态端口转发).还有X11forward也是属于端口转发的一种,但是其是特殊用途的,不在这儿讨论.
0x01ssh中的client和server
我们需要弄清楚local和remote的概念.ssh是典型的client,server架构,我们要连接的服务器是remote端,发起ssh连接的是client端.在client端,我们常用的软件有:windows下面的xshell,putty,mobaxterm;linux下面自带的openssh-client,mac上也是openssh-client.而在server端,一般就是各个发行版安装的openssh-server了.
0x02ssh端口转发localforword
下图是localforward的工作原理图:其中client和client_1在本地网络的两台机器,相互直接是可以直接访问的.server和server_1是远端网络的两台机器,相互之间是可达的.但是本地网络和远端网络是不可随意访问的(可能是路由本身有特殊设置,但是大部分情况下是因为防火墙的隔离设置),只有其中的client_1可以发起向server_1的22端口ssh连接.
使用ssh提供的localforward,从client可以访问到server的22端口,也就是从client可以直接登录到server上.
在client_1上我们输入命令,并保持这个窗口打开不关闭
如果是linux和mac,那么直接输入这个命令就可以了,其中的server和server_1换成相应的IP,如果是windows,可以下载一个mobaxerm,里面有openssh的完全实现也有这个命令.当然windows下面的xshell,putty之类的软件也有相应的配置.
ssh-L10000:server:22server_1
此时会完成如下的事情:
client_1完成到server_1的ssh连接,这条tcp通道就存在了
在client_1端的ssh进程会在本地的tcp:10000端口开启监听
然后在client上输入如下命令
ssh-p10000client_1
此时会完成如下的事情:
client_1发起到client的10000端口连接
client完成连接
server_1上的sshd进程发起到server的22端口的连接
所有通过client到client_1的10000端口的数据通过client_1和server_1之间的连接到server_1上,然后接着到server22端口上.回来的数据也是走这个通道.
也就是说,上面图中的3个实线箭头组成的链路通道相当于虚线箭头的通道.达到的效果是,在本地网络中任何client机器通过访问client_1的10000端口,就相当于访问了server的22端口了.当然,这儿可以把22端口换成任何server上面的端口,比如80或者443之类的(不过这个web请求的访问最好还是用下面的动态转发)
0x03ssh端口转发remoteforward
和localforward对应的是remoteforward.注意这儿的local和forward说的是端口是开在哪边的,如果是开在ssh(client)这边,就是localforward.如果是开在sshd(server)那边,就是remoteforward.
那localforward可以让我们跨过防火墙的限制,打一条通道到远端.那么remoteforward有什么用么?
1.既然远端可以有服务要被访问,那么本地端也可以有的,也就是让远端的机器可以跨过防火墙访问本端机器提供的服务.
2.一个更好的用处,如果想让开在自己本机的服务直接被公网访问到(这个在调试的时候很有用,让各种`实际`的流量进入自己的机器一会儿),那么remotefroward可以帮上大忙.
命令和localforward类似,在client1上敲
ssh-R10000:client:22server_1
client_1和server_1建立ssh连接的过程都是一样的.不过第二步开端口是server_1上的ssh进程开一个监听到tcp:10000的端口
然后在和server_1可达的网络中的机器server发起到server_1的10000端口的连接时,client_1上的ssh会将流量导入到client的22端口.
在解释一下第二个用处,server换成是客户的浏览器,server_1上的10000端口换成80端口,client换成是client_1,而且都是自己的电脑,client:22换成127.0.0.1:80.效果就是客户的浏览器访问server_1的80端口时,流量直接进入到自己的PC的80端口了.
0x04ssh端口转发dynamicforward
localforward可以完成本地端口到远端端口的一对一访问.
dynamicforward就是socks5代理.通过在client_1上敲
ssh-D10000server_1
前面client_1和server_1之间连接建立过程都是相同的.此时在client_1上就会开启socks5的10000端口.
我们在client上的web浏览器进行如下的代理设置,那么所有从server_1上能放到导的网址,在client上就能访问到了.相当于把client放到了server_1的位置.
0xff总结
openssh的端口映射是一个强大的功能.基本上防火墙都会让对环境中特定的机器的22端口可以通过,巧妙的使用ssh的portforward功能,可以让很多远程支持的事情变得可能.如果再结合我上篇文章介绍的ProxyCommand功能,会发现我们可以把portforward的跳数继续延长下去,只要环境有一个洞可以通,那么最终我们就能访问到.

文档

端口转发原理和使用端口转发原理和使用方法

0x00ssh支持的通用端口转发。一般我们使用ssh来远程登录主机,在上面执行命令.但是ssh还有portforward的功能,关于ssh的portforward的详细命令,可以看命令的man输出.本文主要对sshportforwarding的工作原理进行介绍。ssh的通用端口转发分为localforward(本地端口转发),remoteforward(远端端口转发),dynamicforward(动态端口转发).还有X11forward也是属于端口转发的一种,但是其是特殊用途的,不在这儿讨论。0x01ssh中的client和server。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top