利用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转发功能做端口映射,实现内网穿透的主要内容,如果未能解决你的问题,请参考以下文章

Linux-SSH反向连接(内网穿透,打洞)

红蓝对抗之隧道技术第一篇(内网穿透端口映射&端口转发Netsh端口转发CS正反向连接多层内网Burp设置上游代理访问内网MSF protfwd端口转发/重定向)

一款简单的内网穿透工具,无需安装即可使用

一行代码实现内网穿透及映射,可以开启映射多个服

内网怎么利用工具上线

路由器frp内网穿透