利用ssh反向隧道控制内网计算机

引子

今天有个朋友告诉我他们 公司把teamviewer的端口封掉了,所以没有办法在家里控制公司的电脑去完成一些任务,于是就问我怎样进行内网穿透。这个时候我第一时间想到的是,通过在一台有公网ip的服务器上编写socket服务器,然后在客户端利用socket连接到服务器,连接到之后,把从服务器接收到的信息当做命令来执行,这样等于就是开了一个后门,可以实现内网穿透。正在我准备编写socket服务端代码的时候,我的直觉告诉我,这么简单的功能肯定已经有前辈实现了,本着不重复造轮子的良好习惯,于是顺手搜索了一下ssh,于是了解到反向隧道可以实现这个功能。

准备环境

  • 一台具有公网ip的服务器(必须开启sshd服务)
  • 一台unix/linux系列的客户端(必须开启sshd服务)

实现原理

这种手段的实现方式是,通过当前unix/linux客户端向服务器主动的建立一个SSL隧道,然后将服务器上的某个端口转发到当前客户端的22端口上,这样任何一台计算机包括服务器本身,都能使用服务器上开启的某个端口连接到当前的客户端上

实现过程

要先实现这个过程非常简单,现在定义服务器名称为S,服务器的ip地址为SADDR,服务器用户为root,需要开启的端口任意,这里使用7777, 客户端计算机的名称为C,客户端计算机的用户user
在C上使用命令主动的向S建立ssh隧道

ssh -p 22  -qngfNTR 7777:127.0.0.1:22  root@SADDR

这样一条命令就能在客户端C上建立了一条链接服务器S的ssh隧道
然后在S上就可以通过7777端口来连接到客户端C了,使用命令如下

ssh -p 7777 user@127.0.0.1

如果是其他计算机,那么可以使用下面的命令来连接

ssh -p 7777 user@SADDR

这样就完成了从外网利用ssh来访问内网的计算机了,当然ssh的 功能肯定不止这么一点,更多的功能就不多做介绍了,想要掌握更多的知识,最终还是需要自己去探索的。

发表评论