初探SSH隧道技术
SSH隧道技术实际上就是通过SSH协议,在两台主机间各开放了一个端口,通过开放的端口,对主机A的请求就可以转发到主机B上,主机B的响应也会转发到A上,这样就可以解决无法从公网访问主机B的问题,从而访问主机B上面的资源。
假设现在有一台A主机,是在公网上的服务器。还有一台B主机,是在内网里的服务器。
现在我们的目的是想要在家里通过外网去访问B主机,基本步骤如下:
1.安装和配置ssh。
要使用SSH隧道,在windows上则需要安装Openssh,在linux上直接使用SSH的命令就可以了。
安装好Openssh之后,为了方便,可以把Openssh/bin目录配置到环境变量PATH里。
2.在B主机上开启SSH端口转发(即SSH隧道):
ssh -C -R remote_port:localhost:local_port [email protected]_addr
执行这条命令之后会要求输入密码,输完密码之后SSH隧道就已经配置好了。
-C的含义是要求传输的信息要压缩。
-R 的含义则是将发往remote_addr的remote_port端口的请求,全部转发到localhost:local_port端口上。
更详细的用法可以参考SSH帮助。
3.在A主机上查看ssh隧道是否已经开启。
执行netstat -tnlp
可以看到有2个sshd的服务,一个是远程登录用的,一个是SSH隧道。
到这里SSH隧道就已经完全没有问题了。
如果需要关闭隧道则在A主机上执行kill ssh隧道的PID 即可