深入 SSH:解锁本地转发、远程转发和动态转发的潜力

文章目录

  • 前言
  • 一、解锁内部服务:SSH 本地转发
    • 1.1 什么是 SSH 本地转发
    • 1.2 本地转发应用场景
  • 二、打开外部访问大门:SSH 远程转发
    • 2.1 什么是 SSH 远程转发
    • 2.2 远程转发应用场景
  • 三、动态转发:SSH 让你拥有自己的 VPN
    • 3.1 什么是 SSH 动态转发
    • 3.2 动态转发应用场景
  • 四、小结
  • 推荐阅读

前言

SSH(Secure Shell)不仅是一个用于安全远程登录的协议,还支持多种类型的端口转发功能,包括本地转发、远程转发和动态转发。这些功能使我们能够灵活地通过 SSH 隧道在不同网络环境中安全地传输数据。本文将详细介绍这三种转发方式及其应用场景。

一、解锁内部服务:SSH 本地转发

1.1 什么是 SSH 本地转发

SSH 本地转发(SSH Local Port Forwarding)是一种通过 SSH 隧道将本地计算机的端口转发到远程服务器的特定端口的方法。其主要目的是在本地访问远程服务器上的服务,确保通信过程中的数据安全性。

在这里插入图片描述

  1. 用户发起 SSH 连接命令:用户在本地主机上使用 SSH 命令发起连接,指定本地端口和远程主机及其端口。例如:

    # 这条命令表示将本地主机的某个端口(本地端口)映射到远程主机的某个端口(远程端口),通过 SSH 服务器进行连接。
    ssh -L 本地端口:远程主机:远程端口 用户名@SSH服务器
    
  2. 建立 SSH 连接:本地主机与 SSH 服务器建立 SSH 连接,确保通信的安全性。

  3. 用户访问本地端口:用户通过访问本地主机的 localhost:本地端口,实际访问到远程主机上的服务。所有访问 localhost:本地端口 的请求都会通过 SSH 隧道转发到远程主机的远程端口。

  4. SSH 隧道转发请求:SSH 服务器接收到来自本地主机的请求,通过 SSH 隧道将这些请求转发到远程主机的远程端口。

  5. 远程主机处理请求:远程主机上的服务接收并处理请求,然后将响应结果返回给 SSH 服务器,SSH 服务器再通过 SSH 隧道将结果返回给本地主机,最终用户在本地主机上获取到结果。

1.2 本地转发应用场景

假设有一个数据库服务器 dbserver.com,它的端口 3306 仅对内部网络开放。你可以通过中转服务器 sshserver.com 访问该数据库。

ssh -L 3306:dbserver.com:3306 user@sshserver.com

执行上述命令后,您可以通过访问 localhost:3306 来连接到 dbserver.com 上的 MySQL 数据库。

在这里插入图片描述

  1. 在本地计算机上运行 ssh -L 3306:dbserver.com:3306 user@sshserver.com
  2. 本地计算机在 localhost:3306 上监听。
  3. 当本地应用程序连接到 localhost:3306 时,SSH 客户端通过 SSH 隧道将请求转发到 sshserver.com。
  4. sshserver.com 将请求转发到 dbserver.com:3306。
  5. 数据库服务器返回的响应通过相同的路径返回到本地计算机。

二、打开外部访问大门:SSH 远程转发

2.1 什么是 SSH 远程转发

SSH 远程转发(SSH Remote Port Forwarding)是一种通过SSH隧道在远程服务器和本地计算机之间安全地转发网络流量的技术。它允许将远程服务器上的某个端口的流量通过SSH隧道传输到本地计算机上的指定端口。这种方式通常用于在安全的 SSH 连接上访问远程服务器内网中的资源,而无需直接暴露这些资源。

在这里插入图片描述

  1. 用户 A 发起连接:用户A在本地主机上使用SSH命令发起远程转发连接。示例命令为:

    #   该命令中,远程端口是SSH服务器上的端口,本地主机是用户A的本地计算机,本地端口是本地主机上的端口,用户名是SSH服务器上的用户名,SSH服务器是远程SSH服务器的地址。
    ssh -R 远程端口:本地主机:本地端口 用户名@SSH服务器
    
  2. 建立 SSH 连接:本地主机与 SSH 服务器之间建立 SSH 连接。这一步骤确保所有数据都通过安全的 SSH 隧道传输。

  3. 用户 B 访问服务:远程主机上的用户 B 试图通过 SSH 服务器访问本地主机上的服务。

  4. 请求转发:SSH 服务器接收到用户 B 的请求后,通过已建立的 SSH 隧道将请求转发到用户 A 的本地主机上的端口。

  5. 响应返回:本地主机将响应通过 SSH 隧道发送回 SSH 服务器,SSH 服务器再将响应转发回远程主机。

2.2 远程转发应用场景

假设你在本地计算机上运行了一个 Web 服务器(例如:localhost:80),希望通过中转服务器 sshserver.com 让远程用户访问该 Web 服务器。

ssh -R 8080:localhost:80 user@sshserver.com

执行上述命令后,远程用户可以通过访问 sshserver.com:8080 来连接到本地计算机上的 Web 服务器。

在这里插入图片描述

  1. 在本地计算机上运行 ssh -R 8080:localhost:80 user@sshserver.com
  2. SSH 服务器在 sshserver.com:8080 上监听。
  3. 当远程用户连接到 sshserver.com:8080 时,SSH 服务器通过 SSH 隧道将请求转发到本地计算机上的 localhost:80。
  4. 本地计算机返回的响应通过相同的路径返回到远程用户。

三、动态转发:SSH 让你拥有自己的 VPN

3.1 什么是 SSH 动态转发

SSH 动态转发(SSH Dynamic Port Forwarding)是一种通过 SSH 隧道实现的代理功能,它允许在本地计算机上创建一个 SOCKS 代理服务器,从而使得所有通过这个代理的流量都通过 SSH 隧道加密并转发到远程服务器。与本地转发和远程转发不同,动态转发不需要预先指定目标主机和端口,而是可以动态地决定目的地,这使其更加灵活。

在这里插入图片描述

  1. 用户发起连接:用户在本地主机上使用 SSH 命令发起动态转发连接。示例命令为:

    # 该命令中,本地代理端口是本地计算机上打开的SOCKS代理端口,用户名是SSH服务器上的用户名,SSH服务器是远程SSH服务器的地址。
    ssh -D 本地代理端口 用户名@SSH服务器
    
  2. 建立 SSH 连接:本地主机与 SSH 服务器之间建立 SSH 连接。这一步确保所有数据都通过安全的 SSH 隧道传输。

  3. 设置本地 SOCKS 代理:本地计算机在指定端口(例如 8080)上启动一个 SOCKS 代理。任何发送到该端口的流量都会通过 SSH 隧道转发到远程服务器。

  4. 用户配置应用程序:用户配置需要通过代理访问网络的应用程序(如浏览器),使其使用本地 SOCKS 代理端口(例如 8080)。

  5. 应用程序发出请求:用户在应用程序中访问某个远程服务器(例如访问某个网站)。应用程序的请求首先发送到本地 SOCKS 代理端口。

  6. 请求转发:本地计算机捕获通过 SOCKS 代理端口的请求,通过已建立的 SSH 隧道将请求加密并转发到 SSH 服务器。

  7. SSH 服务器处理请求:SSH 服务器接收到请求后,根据请求中的目标地址和端口访问远程服务器。

  8. 远程服务器处理请求并返回响应:远程服务器接收请求后进行处理,生成响应数据,并将其返回给 SSH 服务器。SSH 服务器将响应数据通过 SSH 隧道加密并发送回本地主机。

3.2 动态转发应用场景

假设你希望通过中转服务器 sshserver.com 访问多个远程网站(例如:example.com)。可以在本地设置一个 SOCKS 代理。

ssh -D 1080 user@sshserver.com

执行上述命令后,可以配置浏览器或其他应用程序使用 localhost:1080 作为 SOCKS 代理,通过中转服务器访问任意远程网站。

在这里插入图片描述

  1. 在本地计算机上运行 ssh -D 1080 user@sshserver.com。
  2. 本地计算机在 localhost:1080 上监听。
  3. 应用程序通过 SOCKS 代理连接到 localhost:1080。
  4. SSH 客户端根据请求的目标地址,通过 SSH 隧道将请求转发到 sshserver.com。
  5. sshserver.com 将请求转发到目标服务器(例如:example.com)。
  6. 目标服务器返回的响应通过相同的路径返回到本地计算机。

四、小结

SSH 的本地转发、远程转发和动态转发功能为用户提供了强大的网络访问和安全保障。这些功能不仅提升了网络操作的灵活性,还增强了数据传输的安全性。掌握这些 SSH 技术,可以在日常工作中更加高效和安全地访问各种网络资源。

推荐阅读

  1. 深入探究 Spring Boot Starter:从概念到实践
  2. 深入理解 Java 中的 volatile 关键字
  3. OAuth 2.0:现代应用程序的授权标准
  4. Spring 三级缓存
  5. 深入了解 MyBatis 插件:定制化你的持久层框架

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/757726.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

仓库管理系统17--客户管理

原创不易&#xff0c;打字不易&#xff0c;截图不易&#xff0c;多多点赞&#xff0c;送人玫瑰&#xff0c;留有余香&#xff0c;财务自由明日实现 1、添加用户控件 <UserControl x:Class"West.StoreMgr.View.CustomerView"xmlns"http://schemas.microsof…

镭速是如何做到对涉密文件进行大数据迁移的?

随着公司业务的扩展和技术创新&#xff0c;企业经常需要在不同的系统和云服务之间转移庞大的数据量&#xff0c;以适应业务需求和提高资源使用效率。但这一过程中&#xff0c;安全问题尤为突出&#xff0c;成为IT部门的首要挑战。 本文将探讨在大规模数据迁移中可能遇到的安全风…

C语言入门课程学习笔记8:变量的作用域递归函数宏定义交换变量

C语言入门课程学习笔记8 第36课 - 变量的作用域与生命期&#xff08;上&#xff09;第37课 - 变量的作用域与生命期&#xff08;下&#xff09;实验—局部变量的作用域实验-变量的生命期 第38课 - 函数专题练习第39课 - 递归函数简介实验-递归小结 第40课 - C 语言中的宏定义实…

陶瓷化聚烯烃研究逐渐增多 行业即将进入规模化生产阶段

陶瓷化聚烯烃研究逐渐增多 行业即将进入规模化生产阶段 陶瓷化聚烯烃是一种陶瓷化高分子材料&#xff0c;同时也是一种防火阻燃复合材料&#xff0c;主要由聚烯烃&#xff08;作为基材&#xff09;、成瓷填料&#xff08;如无机硅酸盐等&#xff09;、助熔剂、补强剂&#xff0…

MySQL之覆盖索引

什么是覆盖索引&#xff1f; 覆盖索引&#xff1a;查询时使用了索引&#xff0c;且需要返回的列&#xff0c;在改索引中已经全部能找到。 示例&#xff1a;有user表如下&#xff1a; CREATE TABLE user (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 技术主键,name varch…

数据中心网络100GbE发展趋势

100G光产品的技术突破不断满足超大规模数据中心的需求。5G的发展使许多行业能够实现高数据吞吐量和低延迟。从2017年至今&#xff0c;不少企业已经升级到100G数据中心网络&#xff0c;进而追求400G/800G网络。与此同时&#xff0c;其他小型数据中心已逐渐升级至100G。 是什么推…

大数据开发如何管理项目

在面试的时候总是 会问起项目&#xff0c;那在大数据开发的实际工作中&#xff0c;如何做好一个项目呢&#xff1f; 目录 1. 需求分析与项目规划1.1 需求收集与梳理1.2 可行性分析1.3 项目章程与计划 2. 数据准备与处理2.1 数据源接入2.2 数据仓库建设2.3 数据质量管理 3. 系统…

Sorting

本节提供有关在数据网格中对数据进行排序的信息。 GridControl-Grid View Sort Data 默认情况下&#xff0c;最终用户可以按任何列对数据进行排序&#xff0c;但使用MemoExEdit、ImageEdit和PictureEdit在位编辑器的列除外。在运行时&#xff0c;单击列标题一次以升序排列数…

模版总结小全

BFS 最短步数问题 #include<iostream> #include<queue> #include<cstring> using namespace std;const int N 50; char g[N][N],d[N][N]; int dx[] {-1,0,1,0}; int dy[] {0,1,0,-1}; int n,m;int bfs(int x,int y){queue<pair<int,int> > q…

【Kubernetes】搭建工具Kubeadm环境配置

架构&#xff1a;服务器采用Master-nodes&#xff08;3台&#xff09; Worker-nodes(2台) 一&#xff0c;服务准备工作 &#xff08;1&#xff09;在所有&#xff08;5台&#xff09;机器配置 主机名绑定&#xff0c;如下&#xff1a; cat /etc/hosts192.168.0.100 k8s-m…

短剧App开发的全攻略

短剧App开发的全攻略可以概括为以下几个关键步骤&#xff1a; 1、市场调研与需求分析 进行市场调研&#xff0c;研究目标用户群体&#xff0c;了解他们的需求和偏好。 观察竞争对手的App&#xff0c;分析他们的优点和缺点&#xff0c;以此为基础来制定自己的开发计划。 确定App…

【计算机网络】期末复习(2)

目录 第一章&#xff1a;概述 第二章&#xff1a;物理层 第三章&#xff1a;数据链路层 第四章&#xff1a;网络层 第五章&#xff1a;传输层 第一章&#xff1a;概述 三大类网络 &#xff08;1&#xff09;电信网络 &#xff08;2&#xff09;有线电视网络 &#xff0…

c++用什么软件编程?都有哪些?

c用什么软件编程&#xff1f;都有哪些&#xff1f; C 作为一种高效、面向对象的编程语言&#xff0c;广泛应用于软件开发、游戏开发、嵌入式系统等领域。那么在进行 C 编程时&#xff0c;我们通常会使用哪些软件呢&#xff1f;下面就来具体分析。 1. Visual Studio Visual Stu…

Autoware 学习

Autoware不同版本介绍 Autoware官方说明文档&#xff1a;https://autowarefoundation.github.io/autoware-documentation/main 使用ROS2和Autoware的自动驾驶汽车免费在线进阶课 译 https://bbs.huaweicloud.com/blogs/detail/283058 Autoware.AI 第一个基于 ROS 1 发布的 Au…

字节流和字符流的相关知识

目录 1. Writer1.1 写两行数据1.2 换一种方式1.3 追加数据1.4 写很多数据&#xff0c;记得要清一下缓存1.5 用数组、字符串写入 2. Reader2.1 读个文件2.2 读取字符2.3 读取数据到数组2.4 复制文件 3. InputStream4. OutputStream5. 参考链接 1. Writer Writer类是Java.io包中…

springcloud第4季 springcloud-alibaba之nacos+openfegin+gateway+sentinel熔断限流【经典案例】

一 说明 1.1 架构说明 本案例实现原理&#xff1a; 采用alibaba的nacos&#xff0c;openfegin&#xff0c;sentinel&#xff0c;gateway等组件实现熔断限流。 主要理解sentinel的ResouceSentinel和fallback的区别联系。 ResourceSentinel 主要是页面配置熔断限流规则&#…

python-20-零基础自学python-用类和while设计一个掷多次、多面骰子的工具的基础

学习内容&#xff1a;《python编程&#xff1a;从入门到实践》第二版 知识点&#xff1a;类、random、while循环、把while循环和类结合起来 练习内容&#xff1a; 练习9-13&#xff1a;骰子 创建一个Die类&#xff0c;它包含一个名为sides的属性&#xff0c;该属性的默认值…

open-chat-video-editor:开源短视频生成和编辑工具,以及抖音|TikTok 的移动端短视频项目

open-chat-video-editor&#xff1a;开源短视频生成和编辑工具&#xff0c;以及抖音|TikTok 的移动端短视频项目。 open-chat-video-editor&#xff1a;开源短视频生成和编辑工具 简介 Open Chat Video Editor是开源的短视频生成和编辑工具&#xff0c;整体技术框架如下&…

《昇思25天学习打卡营第11天 | 昇思MindSpore基于 MindSpore 实现 BERT 对话情绪识别》

11天本节学习到BERT全称是来自变换器的双向编码器表征量&#xff0c;它是Google于2018年末开发并发布的一种新型语言模型。BERT模型的主要创新点都在pre-train方法上&#xff0c;即用了Masked Language Model和Next Sentence Prediction两种方法分别捕捉词语和句子级别的repres…

Qt WPS(有源码)

项目源码地址&#xff1a;WPS完整源码 一.项目详情 该项目仿照WPS&#xff0c;实现了部分的功能&#xff0c;能够很方便对文本和HTML进行修改&#xff0c;并且有打印功能&#xff0c;可以很方便的生成PDF。 应用界面 项目架构分析 这个项目主要可分为两个部分&#xff0c;一…