利用ssh转发功能做端口映射,实现内网穿透
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用ssh转发功能做端口映射,实现内网穿透相关的知识,希望对你有一定的参考价值。
参考技术A 1台内网机N可以上网,但是没有公网ip,用户userN,需要ssh的服务端和客户端,以及autossh软件;1台操作机C需要通过互联网以ssh的形式主动连接内网机N,需要ssh的客户端;
1台具有公网ip的服务器S做中转,服务器S的ip为s.s.s.s,用户userS,ssh的端口为portS,需要ssh的服务端;
可以使用默认值
意思是服务器S上的12345端口映射到内网机N的22端口,这种方法会出现断线无法连接的情况
利用autossh,断线后会自动连接,更加可靠
autossh比ssh多了一个M参数。
更合适的方法是采用后文的自启动脚本。
编辑sshd_config文件
启用两个配置项,并设置为yes
至此操作机C可以使用ssh客户端连接到服务器S的12345端口,实际上这个数据流会转发到内网机的22端口上,从而实现了内网穿透的功能。
创建自启动文件 /etc/systemd/system/autossh.service
内容如下
启用开机自启动
立即启动
一行代码实现内网穿透及映射,可以开启映射多个服
一行代码实现内网穿透及映射,可以开启映射多个服务和端口,内网映射完成局域网的服务和地址映射到公网。
内网穿透及映射
把内网主机映射成为公网主机,满足内外网穿透,在不同的业务场景中,需要把内网的主机映射成为公网主机来对外提供服务,在公网主机有限的情况,基于netty根据端口号做一个数据映射服务,可以穿透网站、数据库等各种应用,满足日常的使用。
新建项目
任意新建一个java项目,spring 、spring boot、或者其他的 maven项目都可以。
使用方法
1、在 WEB-INF 目录下建立 lib 目录,并把jar包复制到 lib 目录,或者项目的其它目录都可以;
jar包地址
点击下载
2、在maven配置文件,即 pom.xml 中,添加以下依赖:
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.33.Final</version>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
<dependency>
<groupId>natx</groupId>
<artifactId>natx</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>$project.basedir/src/main/webapp/WEB-INF/lib/natx.jar</systemPath>
</dependency>
服务端开启服务
public class TestNat
public static void main(String[] args)
NatxServer.startNat(9090,"123456");
服务端停止服务
NatxServer.endNat();
发布完成
把新建的java项目打包放到服务器运行即可,或者其他方式完成暴露服务都可以。
其它方法
数据同步中还有其他方法,根据实际业务需要进行使用!
其它客户端的使用
https://github.com/YouAreOnlyOne/NATnetty
以上是关于利用ssh转发功能做端口映射,实现内网穿透的主要内容,如果未能解决你的问题,请参考以下文章
红蓝对抗之隧道技术第一篇(内网穿透端口映射&端口转发Netsh端口转发CS正反向连接多层内网Burp设置上游代理访问内网MSF protfwd端口转发/重定向)