首页 » 信息技术 »

SSH之远端端口转发(Remote Port Forwarding)

2019年7月31日 / 18次阅读
SSH

上一篇专门介绍了SSH的本地转发,这一篇继续SSH的远端端口转发,要一口气把这个主题写完。

本地端口转发,是正面突破防火墙的限制。而SSH的远端端口转发,Remote Port Forwarding,则是从防火墙内部穿透到外面,就像从内部向外部建一条隧道,然后外部就可以访问内部了。

还是看图说话:

SSH之远端端口转发

SSH之远端端口转发

A在防火墙外,B在防火墙内,A需要访问B服务器上的端口12345,A也不能SSH到B;

幸运的时,B可以SSH访问A,这时可以用B发起一个远端端口转发隧道到A;

$ ssh -N -f -R 54321:localhost:12345 username@A -p ssh_port_of_A

参数-R就是Remote Port Forwarding的意思,其它的参数,-N,-f,-p,请参考SSH之本地转发

这行命令的意思是,B服务器连接远端A的端口54321建立隧道,使得在A上访问A的54321端口,相当于访问B的12345端口。这样命令在B上输入,命令行中的localhost是B的视角。

同样,A也可以通过B建立的远端转发,来访问与B同局域网的其它服务器的端口:

SSH远端转发,B建立隧道,让A访问C

SSH远端转发,B建立隧道,让A访问C

在B输入命令行:$ ssl -N -R 54321:IP_of_C:12345 username@A

在A上访问54321端口,相当于通过B建立的SSH远端转发隧道,访问防火墙内的C的12345端口。

由于远端端口转发的命令是在B服务器上输入,因此-g参数会失效,B无法控制A的某个端口在A的局域网内开放成为网关。不过,我们也有办法,可以在A上可以建立一个到本地的本地端口转发,来对接B建立的到A的远端转发端口。具体如下:

SSH远端端口转发,A将隧道共享给X

SSH远端端口转发,A将隧道共享给X

B建立一条远端转发隧道到A:$ ssh -N -R 12345:IP_of_C:33333 username@A

在A上方位12345端口,就可以访问到C的33333端口;

现在A在自己身上在建一个网关端口,让X可以访问:

这条命令在A上输入:$ ssh -g -N -L 23456:localhost:12345 localhost

这里就成了-L本地转发了,并且使用-g参数使自己成为网关,局域网中的设备,访问A的23456端口,就是访问A的12345端口,而访问A的12345端口,就是访问C的33333端口。

以上就是对SSH Remote Port Forwarding远端端口转发的介绍。深入理解SSH的各种隧道,关键在实践!

本文链接:https://www.maixj.net/ict/ssh-remote-port-forwarding-22265

相关文章

留言区


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top