SSH参数解释

  • -L port:host:hostPort
    • 解释:将本地机器某个端口转发到远端指定机器的指定端口
    • 原理:本地机器分配了一个socket监听port端口,一旦端口上有了连接,该连接就经过安全通道转发出去,同时远程主机和host的hostPort端口建立连接。可以在配置文件中指定端口的转发。只有root才能转发特权端口。
  • -R port:host:hostPort
    • 解释:将远程主机的某个端口转发到本地端指定机器的指定端口。即反向隧道代理
    • 原理:远程主机上分配了一个socket监听port端口,一旦这个端口上有了连接,该连接就经过安全通道转发出去,同时本地主机和host的hostPort端口建立连接。可以在配置文件中指定端口的转发。只有root才能转发特权端口
  • -D port

    • 解释:指定一个本地机器动态的应用程序端口转发。即动态代理
    • 原理:本地机器上分配一个socket监听port端口,一旦这个端口上有了连接,该连接就会经过安全通道转发出去。根据应用程序的协议可以判断出远程主机将和哪里连接。可以在配置文件中指定端口的转发。只有root才能转发特权端口
  • -N

    • 解释:不执行远程登录命令,用于转发端口。若转发端口的命令未携带-N则会直接登录到远程机器内
  • -f

    • 解释:要求ssh命令在后台执行命令。
  • -g

    • 解释:允许远程主机连接本地转发的端口

本地转发

功能解释

在A服务器执行ssh命令登录B服务器启用ssh隧道,实现通过访问A服务器的转发端口,达到实际访问B服务器的目标端口的目的。

使用场景

出于各种网络或安全等原因,客户端服务直接访问B服务器的端口,因此只要A服务器可以访问到B服务器的ssh端口,就可以通过建立ssh隧道,实现客户端访问A服务器的转发端口间接访问到B服务器的指定端口

命令示例(以下命令均在A主机执行)

SSH登录后启用ssh隧道,但仅监听A主机127.0.0.1地址,退出ssh登录后隧道断开

ssh -L A转发port:B主机IP:B目的端口 root@B主机

SSH命令后不登录B主机,仅启用ssh隧道,仅监听A主机127.0.0.1地址,关闭A主机终端后隧道断开

ssh -N -L A转发port:B主机IP:B目的端口 root@B主机

SSH命令后不登录B主机,仅启用ssh隧道,仅监听A主机127.0.0.1地址,关闭A主机终端后隧道不会断开

ssh -f -N -L A转发port:B主机IP:B目的端口 root@B主机

指定A主机中ssh隧道转发端口绑定的网卡

ssh -f -N -L A主机IP:A转发port:B主机IP:B目的端口 root@B主机

将转发端口绑定至A主机所有网卡

ssh -g -f -N -L A转发port:B主机:B目的端口 root@B主机

远程转发

功能解释

远程转发即在B服务器执行ssh命令登录A服务器来启用SSH隧道,以实现通过访问A服务器的转发端口,达到实际访问为B服务器的目标端口的目的。它和本地转发的区别在于具体是在哪个服务器上使用的ssh命令建立隧道来访问的目标服务器端口。

使用场景

远程转发使用场景较为广泛且实用。

如果我们在家庭电脑上跑了一个tomcat服务并想提供到互联网访问,由于家庭电脑一般是通过路由器来访问互联网的(即在nat网络中),我们需要在家庭路由器中进行端口映射来实现。

如果我们是公共路由器没有权限怎么办?又或者在权限管控严格的公司中我们没有权限怎么办?

巧合的是,我们手上还有一台拥有公网IP的主机(如阿里云主机等),我们的家庭电脑是可以访问到互联网的(即可以SSH访问到拥有公网IP的主机),直接使用SSH隧道就可以解决以上问题。

命令示例(以下命令均在B主机执行)

SSH命令后不登录A主机,仅启用ssh隧道,仅监听A主机127.0.0.1地址,关闭B主机终端后隧道不会断开

ssh -f -N -R A主机转发端口:B主机IP:B目的端口 root@A主机

看到这里,你一定会联想到以下两条指令来实现绑定到非lookback地址:

ssh -f -N -R A主机IP:A主机转发端口:B主机IP:B目的端口 root@A主机

ssh -g -f -N -R A主机转发端口:B主机IP:B目的端口 root@A主机

将远程转发绑定到网卡

上面我们尝试建立远程转发隧道后,仅监听127.0.0.1地址,这是因为在SSH服务的配置文件/etc/ssh/sshd_config中有这样一个配置

注:windows下user/.ssh/文件夹下没有config配置文件,可以手动创建一个config文件来实现对应的配置
GatewayPorts 是否允许远程主机连接本地的转发端口,默认值为 no。

将此项配置为yes并重启SSH服务后,再次执行命令

ssh -f -N -R A主机转发端口:B主机IP:B目的端口 root@A主机

这时远程转发的转发端口会设置在A主机的所有网卡上,即0.0.0.0

当然除了这种方法,我们还可以使用其他技术手段来实现允许其他主机访问A主机127.0.0.1地址的转发端口,例如在A主机用其他程序去反向代理127.0.0.1的转发端口(nginx反向代理)

动态转发

功能解释

动态转发即通过配置一个本地端口,将通过隧道的数据转发到目标端地址网络。

如下图所示,动态转发不像本地转发与远程转发一样转发端口与目标端口是一对一的,动态转发中的转发端口对应的目标是目标主机所在的整个网络。不过使用动态转发访问目标主机所在网络时需要应用程序本身支持代理配置或者使用socket代理工具。

使用场景

同样如上图所示,如果存在一个子网1与子网2之间设有防火墙,主机A只能访问到主机B的ssh端口,这时如果主机A或者外部客户端想要访问子网2中的任意IP的任意端口时,可以使用动态转发隧道实现。

命令示例(以下命令均在A主机执行)

SSH命令后不登录B主机,仅启用ssh隧道,仅监听A主机127.0.0.1地址,关闭A主机终端后隧道不会断开

ssh -f -N -D A主机转发端口 root@A主机

SSH命令后不登录B主机,仅启用ssh隧道,监听A主机指定网卡IP地址,关闭A主机终端后隧道不会断开

ssh -f -N -D A主机IP地址:A主机转发端口 root@A主机

客户端代理配置

当动态代理隧道创建好之后我们还需要通过代理客户端进行设置后才能使用隧道。如果应用程序支持配置,直接配置即可。如果是不支持配置代理的应用程序则需要使用socket代理工具来搭配使用,常用的客户端代理工具有proxifier

建立稳定的代理隧道

通常我们ssh为了保证安全,当我们一段时间没有使用之后就会自动断开连接,这样非常不方便。因此我们需要一些手段来保证我们的ssh隧道更加稳定,不会中途断开

Putty

Putty是对Telnet、SSH、rlogin、纯TCP以及串行接口建立连接的软件。早期仅支持windows平台,最近逐渐开始支持其它平台

我们可以通过使用putty来创建一个ssh代理隧道建立一个稳定的连接

Autossh

Autossh是linux平台下建立稳定ssh代理隧道的工具

本文参考《SSH隧道详解与使用AutoSSH实现稳定的内网穿透》

SSH隧道与内网穿透相关推荐

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

    这篇文章主要介绍了如何利用SSH 反向隧道穿透NAT,并演示了如何维持一条稳定的SSH 隧道. 假设有机器A 和B,A 有公网IP,B 位于NAT 之后并无可用的端口转发,现在想由A 主动向B 发起S ...

  2. nps+Proxifier搭建socks5代理隧道进行内网穿透

    目录 一.实验环境搭建 二.nps 服务端配置 客户端配置 将npc注册到系统服务 三.Proxifiers使用 在渗透过程中,我们需要快速实现内网穿透,从而绕过网络访问限制,直接从外网来访问内网 正 ...

  3. 基于4G LTE模块的树莓派远程SSH连接方案(内网穿透)

    关键词: 树莓派  Raspberry  4G  LTE  华为  Huawei  ME909  移远  EC20  公网服务器  远程连接  远程SSH  MobaXterm  内网穿透 概述:树莓 ...

  4. mysql ssh隧道连接内网mysql

    通过SSH隧道连接MySQL数据库 一.背景 问题所在:MySQL被运用于越来越多的业务中,在关键业务中对数据安全性的要求也更高,数据安全如果只靠MySQL应用层面显然是不够的,虽然说MySQL实现的 ...

  5. 通过WireGuard搭建隧道实现内网穿透

    1.安装wireguard 官方安装手册:https://www.wireguard.com/install/ docker安装:https://hub.docker.com/r/linuxserve ...

  6. 内网穿透从搭建到溯源(内网隧道搭建、绕过、隧道流量分析、日志分析、隧道防护)

    背景 在攻防博弈这个永久的话题中,永远不会缺少一个重要角色即内网穿透.当渗透测试人员在进入内网,需要扩大战果的时候,往往会遇到内网的一些防护策略,不外乎边界设备.防火墙及入侵检测设备对端口或者数据包的 ...

  7. 内网穿透实现实体服务器变云服务器:服务器无公网ip,如何提供公网网站,又如何异地ssh登录或者异地登录服务器的宝塔面板

    先说本经验的应用场景 up主的就业方向是开发网站前后端,有一台自己的实体服务器,没有公网IP,我希望: 能长久地提供任何人在任何地点都能用浏览器访问到的网站: 另外由于服务器存放在家里,我开学.旅游. ...

  8. 内网穿透从搭建到溯源

    目录 背景 内网穿透及溯源 网络层隧道搭建 传输层隧道搭建 应用层隧道搭建 测试通信 案例 总结 背景 在攻防博弈这个永久的话题中,永远不会缺少一个重要角色即内网穿透.当渗透测试人员在进入内网,需要扩 ...

  9. 简单内网穿透-利用树莓派-低成本建站 无需公网ip

    很多人都想试试自己建站玩一玩 (比如博客.自建网盘.远程下载等),但家里宽带没公网 IP,特意买台服务器又显得浪费.那么有没成本小.可玩性高.又能长期稳定使用的方案呢? 其实,免费的内网穿透工具 (如 ...

最新文章

  1. Nat.Commun.|使用基于注意力机制的多标签神经网络预测并解释12种RNA修饰
  2. 2021年,AI能否进军加密领域?
  3. Linux系统下的文件管理类常命令及使用方式
  4. 售后服务成OA品牌竞争重要因素
  5. Yes, Prime Minister 打表找规律-质数
  6. php mysql 获取错误_php怎样获取mysql错误信息
  7. linux目录 文件 pdf,linux文件与目录管理.pdf
  8. Django(part19)--Django中的应用
  9. 2016ICPC青岛
  10. python预测股票价格tushare_用tushare对股票进行简单分析
  11. 强势推出第九代酷睿处理器,大敌当前,英特尔不挤牙膏了
  12. caffe---之eltwise层
  13. delete语句与reference约束冲突怎么解决_一条简单的更新语句,MySQL是如何加锁的?...
  14. CAN FD:测量和重编程
  15. Java字节码技术javassist
  16. ArcGIS Pro + PS 矢量化用地规划图
  17. 通信算法之三十五:GMSK/MSK/CPFSK/CPM/FSK仿真链路
  18. Memery of habit
  19. 手机黑屏,但是按开机键有震动,能进系统,usb也能识别fastboot和rec(bl已解)
  20. 计算机组成原理 — CPU — 多核处理器体系结构

热门文章

  1. 1000+道 互联网Java架构师面试题
  2. Mac office2019
  3. ORWL:是功能强大的微型开源计算机
  4. 可见即可爬:快速上手 Selenium
  5. tcgames使用有延迟_电脑玩手机游戏TC Games手游助手常见掉线及连接问题解决方法...
  6. 30%代工企业缺乏核心技术,386万家中国制造业如何维持优势
  7. 【原生JS和canvans实现图片的高斯模糊(qq音乐图片背景效果)】
  8. 天呐!智能手机比任何人都更快地杀死地球
  9. 【t056】智力问答(multiset做法)
  10. 2022世界物联网博览会|中国电信5G+AIoT创新科技齐上阵,亮点纷呈看不够