使用SSH对其它应用程序在别的TCP端口上建立的TCP/IP传输进行加密和解密,这一过程称为端口转发,其绝大多数操作都是透明的,功能非常强大。 端口转发有时也叫隧道传输,可将不安全的连接变为安全加密的连接,用于穿透防火墙什么的很有效果。
我们经常会遇到这种情况,需要在外网访问内网某台机器上的服务,但该机器只有内网地址,无法直接访问,而内网中另外的Linux主机上有外网地址,可以直接访问,这时就可以使用SSH端口转发来解决。假设目前我们当前使用的是主机A,处于外网中。我们想访问主机C(内网中,IP为192.168.1.155)上的Http://192.168.1.155:8080/testApp。直接访问肯定不行,正巧内网网段中有一台Linux主机B有外网地址。这时,使用SSH客户端(SecureCRT、Putty、Moba Xterm等常见客户端都支持)建立A和B的SSH连接,在连接中设置端口转发,转发的规则是指定本地地址即主机A的端口A(自行设置,不要跟其它常用的端口冲突),以及目的地址即主机C的地址(192.168.1.155)和端口C(8080)。这样就可以在主机A的浏览器中输入http://localhost:端口A/testApp来访问主机C上的testApp了。
上述例子的原理是:SSH连接监听主机A的端口A,将端口A上接收到的所有消息发送到目的地址即主机C的地址(192.168.1.155)和端口B(8080),当然中间要先通过SSH连接发送到主机B,主机B再通过内网连接发送到主机C。
网友评论