【网络】SSH本地/远程/动态端口转发

网络拓扑图

为了方便讲解命令和原理,假想了一个常见的网络拓扑场景,主要包括公司网络场景以及家庭网络场景。公司网络场景中,办公桌面上的Windows工作站可以通过代理服务器访问外网,公司实验室网络由跳板机以及跳板机后面的私有局域网构成。家庭网络场景则由路由器以及路由器后面的机器组成。

主要目的是通过各种类型的端口转发机制,实现设备之间的相互访问以及对Internet的访问。对端口转发熟悉的同学,看下拓扑图基本上也就明白了。

【网络】SSH本地/远程/动态端口转发

SSH本地端口转发

桌面工作站访问实验室机器(免登录跳板机)

$ ssh -f -N -L 22:192.168.42.200: [email protected]
-f表示让ssh进入后台执行,
-N表示不要执行远程命令,对于端口转发十分有用,
-L指示转发地址,意思是当访问localhost的22端口时,
则将访问发送给跳板机(jump-pub-ip),
由跳板机转发给192.168.42.200的22端口,从而实现SSH登录。

$ ssh -p 22 [email protected]

实验室机器访问外网(本地转发)

$ ssh -f -N -L 19192:proxy-ip:9000 [email protected]
-f表示让ssh进入后台执行,-N表示不要执行远程命令,对于端口转发十分有用,
-L指示转发地址,意思是当访问localhost的19192端口时,则将访问发送给跳板机(192.168.42.1),
由跳板机转发给proxy-ip的9000端口。

$ export http_proxy=localhost:19192; export https_proxy=$http_proxy; export ftp_proxy=$http_proxy
$ cd /tmp/; wget www.baidu.com
设定好环境变量后,即可以访问外网;可以使用wget进行测试。

SSH远程端口转发

路由器端口转发(本质上是远程转发)
Router Settings: Port Forwarding: 3022->192.168.1.24:22
就是将访问路由器3022端口的通信请求
全部转发到192.168.1.24的22端口,交由1.24处理。
这样外网的设备就可以通过SSH访问家里局域网中的电脑了。

SSH动态端口转发

占位符