初探SSH隧道技术

2016年08月22日 原创
关键词: SSH
摘要 SSH隧道技术可以将对一台主机A的请求转发到另一台主机B上(响应亦然),从而可以达到从外网访问内网的目的。

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 username@remote_addr

执行这条命令之后会要求输入密码,输完密码之后SSH隧道就已经配置好了。

-C的含义是要求传输的信息要压缩。

-R 的含义则是将发往remote_addr的remote_port端口的请求,全部转发到localhost:local_port端口上。

更详细的用法可以参考SSH帮助。

3.在A主机上查看ssh隧道是否已经开启。

执行netstat -ntlp

可以看到有2个sshd的服务,一个是远程登录用的,一个是SSH隧道。

到这里SSH隧道就已经完全没有问题了。
如果需要关闭隧道则在A主机上执行kill ssh隧道的PID 即可