目录

SSH做本地端口转发

SSH做反向隧道(远程端口转发)

用autossh建立稳定隧道


SSH开启端口转发需要修改 /etc/ssh/sshd_config配置文件,将 GatewayPorts修改为yes

-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-L 本地端口转发
-D 动态端口转发

SSH做本地端口转发

现在我们有这样一种情景,服务器A上有Redis数据库,并且我们知道Redis数据库的密码。但是Redis数据库只监听本地的6379端口,也就是127.0.0.1:6379,现在我们需要连接该Redis数据库,读取其中的数据。那么,我们就可以用SSH做本地端口转发,在服务器A上监听16379端口,当连接该主机的16379端口时,16379端口相当于正向代理,将我们的流量给本地的6379端口,再将6379端口返回的流量给我们的主机

ssh -fCNL *:16379:localhost:6379 localhost  #本地监听16379端口,将16379端口的流量都转发给6379端口

SSH做反向隧道(远程端口转发)

注意:这里公网服务器B和内网服务器A都必须是Linux系统,才能建立SSH隧道

现在我们有这么一个环境,我们拿到了公网服务器B的权限,并通过公网服务器B进一步内网渗透,拿到了内网服务器A的权限。但是现在我们想要在自己的Kali机器上,获取内网服务器A的一个稳定持久的SSH权限。那么,我们可以通过SSH反向隧道,来得到内网服务器A的一个SSH权限。我们可以将内网服务器A的22端口远程转发到公网服务器的1234端口。

通俗地说,就是在机器A上做到B机器的反向代理;然后在B机器上做正向代理实现远程端口的转发

首先,在内网服务器A的操作

反向代理
ssh -fCNR 192.168.10.139:8888:localhost:22 root@192.168.10.139 #意思就是将A机器的22号端口的流量都转发给B机器的8888端口

然后,公网服务器B的操作

正向代理
ssh -fCNL *:1234:localhost:8888 localhost #意思就是将本地监听的1234端口的流量都转发给本地的8888端口

接着,在黑客机器C的操作,通过ssh公网服务器B的某个端口实现ssh内网服务器A的22号端口

ssh -p 1234 root@100.100.10.12   #ssh连接到公网服务器的1234端口

所以最终流量的走向是这样的:黑客SSH到公网服务器B的1234端口,公网服务器B监听了本地的1234端口,将流量转发到本地的8888端口,于是内网服务器A将本地的22号端口反向代理到了公网服务器B的8888端口,公网服务器B又将8888端口的流量转发到了本地的1234端口,所以黑客SSH连接到了内网服务器A。

缺点:这种ssh反向链接会因为超时而关闭,如果关闭了那从外网连通内网的通道就无法维持了,为此我们需要另外的方法来提供稳定的ssh反向代理隧道。

用autossh建立稳定隧道

安装autossh:yum install autossh

autossh的参数与ssh的参数是一致的,但是不同的是,在隧道断开的时候,autossh会自动重新连接而ssh不会。另外不同的是我们需要指出的-M参数,这个参数指定一个端口,这个端口是外网的B机器用来接收内网A机器的信息,如果隧道不正常而返回给A机器让他实现重新连接。

在内网A机器上的操作:

反向代理
autossh -M 9999 ssh -fCNR 192.168.10.139:8888:localhost:22 root@192.168.10.139

参考文章:实战SSH端口转发

使用SSH反向隧道进行内网穿透

相关文章:内网转发

使用SSH端口做端口转发以及反向隧道的更多相关文章

  1. SSH 内网端口转发实战

    导读 大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多.不过其实除了这个功能,它的隧道转发功能更是吸引人. 如果两个内网之间的linux服务器需要互相登录,或需要互相访问内网某个端口,担忧 ...

  2. 基于SSH协议的端口转发

    [前言] 最近一直在使用ssh协议的端口转发(隧道)功能,完成对内网空透等.这篇文章将主要讲解3种常用的ssh tunnelling使用方法和基本原理. 在介绍具体内容前,我先奉上端口转发的常用情景: ...

  3. nginx在使用非80端口做反向代理【转】

    设置nginx反向代理,nginx在使用非80端口做反向代理时,浏览器访问发现返回302错误 upstream jboss{ server max_fails= fail_timeout=20s; s ...

  4. SSH端口三种转发方式

    本地转发 假设有ssh服务器B,telnet服务器C被防火墙与外界隔离,此时外部主机A无法直接访问C服务器. 此时可以通过本地转发的方式让A与C借助B服务器通过ssh协议通信. client fire ...

  5. ssh验证和端口转发

    ssh 服务登录验证 ssh 服务登录验证方式: 用户/ 口令 基于密钥 基于用户和口令登录验证 客户端发起ssh请求,服务器会把自己的公钥发送给用户 用户会根据服务器发来的公钥对密码进行加密 加密后 ...

  6. CentOS 下做端口映射/端口转发

    CentOS 下做端口映射/端口转发==[实现目标]==================[服务器A]有2块网卡,一块接内网,一块接外网,[服务器B]只有一块内网网卡:访问[服务器A]的7890端口跳转 ...

  7. 使用iptables做端口转发

    通过iptables可以做转发 #!/bin/sh IPT="/sbin/iptables" /bin/echo "1" > /proc/sys/net/ ...

  8. nginx 端口转发 (proxy_pass反向代理)

    第一种(访问IP转发到IP+端口) server{ listen ; server_name 192.168.1.114; index index.php index.html index.htm; ...

  9. Nginx服务器中配置非80端口的端口转发方法详解

    这篇文章主要介绍了Nginx服务器中配置非80端口的端口转发方法详解,文中使用到了Nginx中的proxy_pass配置项,需要的朋友可以参考下 nginx可以很方便的配置成反向代理服务器: 1 2 ...

随机推荐

  1. SpringCloud里面切换数据源无效的问题

    问题描述: 调用链:controller1的接口A->service1的方法A->service2的方法B 方法A开启了事务,且指定了数据库A的数据源 方法B也开启了事务,使用了默认的事务 ...

  2. 我与FreeBSD的故事之一

    记得还是那些无聊的日子,群里有网友称Linux只能玩WPS,我表示质疑,并通过百度这个搜索引擎搜索到了Ubuntu Kylin,即由湖南的国防科技大学与Ubuntu社区合作并由其主导的Ubuntu麒麟 ...

  3. Java基础API

    API API概述 API (Application Programming Interface) :应用程序编程接口 java中的API指的就是 JDK 中提供的各种功能的 Java类,这些类将底层 ...

  4. kettle 执行 kjb 临时文件夹 /tmp permission denied 问题

    编写完的 kettle job (kjb文件) 放在服务器上执行的时候出现了奇怪的错误: # 执行 kjb ./kitchen.sh -file:/opt/code/ods/ods_inc.kjb # ...

  5. 攻防世界 reverse evil

    这是2017 ddctf的一道逆向题, 挑战:<恶意软件分析> 赛题背景: 员工小A收到了一封邮件,带一个文档附件,小A随手打开了附件.随后IT部门发现小A的电脑发出了异常网络访问请求,进 ...

  6. Announcing cnblogs-hardening 1.0 Preview 1

    Release Notes Write about coding Note About coding Share about coding Talk about coding Comment abou ...

  7. 使用 dynamic 类型让 ASP.NET Core 实现 HATEOAS 结构的 RESTful API

    上一篇写的是使用静态基类方法的实现步骤:  http://www.cnblogs.com/cgzl/p/8726805.html 使用dynamic (ExpandoObject)的好处就是可以动态组 ...

  8. 关于MySQL日志,我与阿里P9都聊了些啥?

    写在前面 周末,我与阿里P9资深技术专家(这里就不说名字了),聊起了MySQL这个话题,为啥会聊这个呢?因为他看到我出版了一部<MySQL技术大全:开发.优化与运维实战>,对书籍的评价也是 ...

  9. JVM(三)类加载与字节码技术

    1.类文件结构 首先获得.class字节码文件 方法: 在文本文档里写入java代码(文件名与类名一致),将文件类型改为.java 在文件对应目录下运行cmd,执行javac XXX.java 以下是 ...

  10. DevEco Device Tool 2.1 Beta1 的Hi3861在Windows平台的编译体验

    DevEco Device Tool迎来了2.1 Beta1,其中的亮点之一是:支持Hi3861开发板的源码在Windows平台编译.带着浓厚的兴趣,第一时间做了一次体验. 首先在官网下载" ...