深入 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 隧道将本地计算机的端口转发到远程服务器的特定端口的方法。其主要目的是在本地访问远程服务器上的服务,确保通信过程中的数据安全性。
-
用户发起 SSH 连接命令:用户在本地主机上使用 SSH 命令发起连接,指定本地端口和远程主机及其端口。例如:
# 这条命令表示将本地主机的某个端口(本地端口)映射到远程主机的某个端口(远程端口),通过 SSH 服务器进行连接。 ssh -L 本地端口:远程主机:远程端口 用户名@SSH服务器
-
建立 SSH 连接:本地主机与 SSH 服务器建立 SSH 连接,确保通信的安全性。
-
用户访问本地端口:用户通过访问本地主机的
localhost:本地端口
,实际访问到远程主机上的服务。所有访问localhost:本地端口
的请求都会通过 SSH 隧道转发到远程主机的远程端口。 -
SSH 隧道转发请求:SSH 服务器接收到来自本地主机的请求,通过 SSH 隧道将这些请求转发到远程主机的远程端口。
-
远程主机处理请求:远程主机上的服务接收并处理请求,然后将响应结果返回给 SSH 服务器,SSH 服务器再通过 SSH 隧道将结果返回给本地主机,最终用户在本地主机上获取到结果。
1.2 本地转发应用场景
假设有一个数据库服务器 dbserver.com,它的端口 3306 仅对内部网络开放。你可以通过中转服务器 sshserver.com 访问该数据库。
ssh -L 3306:dbserver.com:3306 user@sshserver.com
执行上述命令后,您可以通过访问 localhost:3306
来连接到 dbserver.com
上的 MySQL 数据库。
- 在本地计算机上运行
ssh -L 3306:dbserver.com:3306 user@sshserver.com
。 - 本地计算机在 localhost:3306 上监听。
- 当本地应用程序连接到 localhost:3306 时,SSH 客户端通过 SSH 隧道将请求转发到 sshserver.com。
- sshserver.com 将请求转发到 dbserver.com:3306。
- 数据库服务器返回的响应通过相同的路径返回到本地计算机。
二、打开外部访问大门:SSH 远程转发
2.1 什么是 SSH 远程转发
SSH 远程转发(SSH Remote Port Forwarding)是一种通过SSH隧道在远程服务器和本地计算机之间安全地转发网络流量的技术。它允许将远程服务器上的某个端口的流量通过SSH隧道传输到本地计算机上的指定端口。这种方式通常用于在安全的 SSH 连接上访问远程服务器内网中的资源,而无需直接暴露这些资源。
-
用户 A 发起连接:用户A在本地主机上使用SSH命令发起远程转发连接。示例命令为:
# 该命令中,远程端口是SSH服务器上的端口,本地主机是用户A的本地计算机,本地端口是本地主机上的端口,用户名是SSH服务器上的用户名,SSH服务器是远程SSH服务器的地址。 ssh -R 远程端口:本地主机:本地端口 用户名@SSH服务器
-
建立 SSH 连接:本地主机与 SSH 服务器之间建立 SSH 连接。这一步骤确保所有数据都通过安全的 SSH 隧道传输。
-
用户 B 访问服务:远程主机上的用户 B 试图通过 SSH 服务器访问本地主机上的服务。
-
请求转发:SSH 服务器接收到用户 B 的请求后,通过已建立的 SSH 隧道将请求转发到用户 A 的本地主机上的端口。
-
响应返回:本地主机将响应通过 SSH 隧道发送回 SSH 服务器,SSH 服务器再将响应转发回远程主机。
2.2 远程转发应用场景
假设你在本地计算机上运行了一个 Web 服务器(例如:localhost:80),希望通过中转服务器 sshserver.com 让远程用户访问该 Web 服务器。
ssh -R 8080:localhost:80 user@sshserver.com
执行上述命令后,远程用户可以通过访问 sshserver.com:8080
来连接到本地计算机上的 Web 服务器。
- 在本地计算机上运行
ssh -R 8080:localhost:80 user@sshserver.com
。 - SSH 服务器在 sshserver.com:8080 上监听。
- 当远程用户连接到 sshserver.com:8080 时,SSH 服务器通过 SSH 隧道将请求转发到本地计算机上的 localhost:80。
- 本地计算机返回的响应通过相同的路径返回到远程用户。
三、动态转发:SSH 让你拥有自己的 VPN
3.1 什么是 SSH 动态转发
SSH 动态转发(SSH Dynamic Port Forwarding)是一种通过 SSH 隧道实现的代理功能,它允许在本地计算机上创建一个 SOCKS 代理服务器,从而使得所有通过这个代理的流量都通过 SSH 隧道加密并转发到远程服务器。与本地转发和远程转发不同,动态转发不需要预先指定目标主机和端口,而是可以动态地决定目的地,这使其更加灵活。
-
用户发起连接:用户在本地主机上使用 SSH 命令发起动态转发连接。示例命令为:
# 该命令中,本地代理端口是本地计算机上打开的SOCKS代理端口,用户名是SSH服务器上的用户名,SSH服务器是远程SSH服务器的地址。 ssh -D 本地代理端口 用户名@SSH服务器
-
建立 SSH 连接:本地主机与 SSH 服务器之间建立 SSH 连接。这一步确保所有数据都通过安全的 SSH 隧道传输。
-
设置本地 SOCKS 代理:本地计算机在指定端口(例如 8080)上启动一个 SOCKS 代理。任何发送到该端口的流量都会通过 SSH 隧道转发到远程服务器。
-
用户配置应用程序:用户配置需要通过代理访问网络的应用程序(如浏览器),使其使用本地 SOCKS 代理端口(例如 8080)。
-
应用程序发出请求:用户在应用程序中访问某个远程服务器(例如访问某个网站)。应用程序的请求首先发送到本地 SOCKS 代理端口。
-
请求转发:本地计算机捕获通过 SOCKS 代理端口的请求,通过已建立的 SSH 隧道将请求加密并转发到 SSH 服务器。
-
SSH 服务器处理请求:SSH 服务器接收到请求后,根据请求中的目标地址和端口访问远程服务器。
-
远程服务器处理请求并返回响应:远程服务器接收请求后进行处理,生成响应数据,并将其返回给 SSH 服务器。SSH 服务器将响应数据通过 SSH 隧道加密并发送回本地主机。
3.2 动态转发应用场景
假设你希望通过中转服务器 sshserver.com 访问多个远程网站(例如:example.com)。可以在本地设置一个 SOCKS 代理。
ssh -D 1080 user@sshserver.com
执行上述命令后,可以配置浏览器或其他应用程序使用 localhost:1080
作为 SOCKS 代理,通过中转服务器访问任意远程网站。
- 在本地计算机上运行 ssh -D 1080 user@sshserver.com。
- 本地计算机在 localhost:1080 上监听。
- 应用程序通过 SOCKS 代理连接到 localhost:1080。
- SSH 客户端根据请求的目标地址,通过 SSH 隧道将请求转发到 sshserver.com。
- sshserver.com 将请求转发到目标服务器(例如:example.com)。
- 目标服务器返回的响应通过相同的路径返回到本地计算机。
四、小结
SSH 的本地转发、远程转发和动态转发功能为用户提供了强大的网络访问和安全保障。这些功能不仅提升了网络操作的灵活性,还增强了数据传输的安全性。掌握这些 SSH 技术,可以在日常工作中更加高效和安全地访问各种网络资源。
推荐阅读
- 深入探究 Spring Boot Starter:从概念到实践
- 深入理解 Java 中的 volatile 关键字
- OAuth 2.0:现代应用程序的授权标准
- Spring 三级缓存
- 深入了解 MyBatis 插件:定制化你的持久层框架
相关文章:
深入 SSH:解锁本地转发、远程转发和动态转发的潜力
文章目录 前言一、解锁内部服务:SSH 本地转发1.1 什么是 SSH 本地转发1.2 本地转发应用场景 二、打开外部访问大门:SSH 远程转发2.1 什么是 SSH 远程转发2.2 远程转发应用场景 三、动态转发:SSH 让你拥有自己的 VPN3.1 什么是 SSH 动态转发3.…...
python如何把一个函数的返回值,当成这个函数的参数值
python如何把一个函数的返回值,当成这个函数的参数值 1. 递归调用 递归是一种函数自己调用自己的方法。在递归调用中,你可以将前一次调用的返回值作为下一次调用的参数。 def recursive_function(x):# 函数逻辑if 条件满足:return 结果else:return rec…...
【融合ChatGPT等AI模型】Python-GEE遥感云大数据分析、管理与可视化及多领域案例应用
随着航空、航天、近地空间遥感平台的持续发展,遥感技术近年来取得显著进步。遥感数据的空间、时间、光谱分辨率及数据量均大幅提升,呈现出大数据特征。这为相关研究带来了新机遇,但同时也带来巨大挑战。传统的工作站和服务器已无法满足大区域…...
SpringBoot: Eureka入门
1. IP列表 公司发展到一定的规模之后,应用拆分是无可避免的。假设我们有2个服务(服务A、服务B),如果服务A要调用服务B,我们能怎么做呢?最简单的方法是让服务A配置服务B的所有节点的IP,在服务A内部做负载均衡调用服务B…...
Typescript 【实用教程】(2024最新版)含类型声明,类型断言,函数,接口,泛型等
简介 TypeScript 是 JavaScript 的超集,是 JavaScript(弱类型语言) 的强类型版本。 拥有类型机制文件后缀 .tsTypescript type ES6TypeScript 和 JavaScript 的关系类似 less 和 css 的关系TypeScript对 JavaScript 添加了一些扩展&#x…...
智慧校园-实训管理系统总体概述
智慧校园实训管理系统,专为满足高等教育与职业教育的特定需求而设计,它代表了实训课程管理领域的一次数字化飞跃。此系统旨在通过革新实训的组织结构、执行流程及评估标准,来增强学生的实践操作技能和教师的授课效率,为社会输送具…...
如何用GPT开发一个基于 GPT 的应用?
原文发自博客:GPT应用开发小记 如何开发一个基于 GPT 的应用?答案就在问题里,那就是用 GPT 来开发基于 GPT 的应用。本文以笔者的一个开源项目 myGPTReader 为例,分享我是如何基于 GPT 去开发这个系统的,这个系统的功能…...
大数据生态体系中各组件的区别面试题(更新)
一、MapReduce与Spark有什么区别? 1、处理方式: MapReduce基于磁盘处理数据,将中间结果保存到磁盘中,减少了内存占用,计算速度慢。 基于内存处理数据,将计算的中间结果保存到内存中,计算速度快。2、资源申请方式&…...
数字信号处理实验一(离散信号及离散系统的MATLAB编程实现)
实验要求: 离散信号及离散系统的MATLAB编程实现(2学时) 要求: 编写一程序,输出一定长度(点数),具有一定幅度、(角)频率和初始相位的实(或复&…...
数字图像处理专栏——introduction
Introduction: 数字图像处理技术是我在深入学习研究的方向之一。本科期间跟随导师做基于AndroidOpenCV的病虫识别app,因此入门,我也对该部分知识有进一步探索的欲望,但更多的是因该脚踏实地一步步记录,一步步成长。 本篇从数字图…...
Django 模版继承
1,设计母版页 Test/templates/6/base.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><!-- 修正了模板标签的全角字符问题 -->{% block title %}<title>这个是母版页</title>{…...
Apipost接口测试工具的原理及应用详解(一)
本系列文章简介: 随着软件行业的快速发展,API(应用程序编程接口)作为不同软件组件之间通信的桥梁,其重要性日益凸显。API的质量直接关系到软件系统的稳定性、性能和用户体验。因此,对API进行严格的测试成为…...
一款轻量级的通信协议---MQTT (内含Linux环境搭建)
目录 MQTT MQTT的关键特点: 应用场景 Linux环境搭建: 1. 安装mosquitto 2. Linux下客户端进行通信 3. PC端和Linux下进行通信 安装MQTT. fx 4. MQTT.fx的使用 1. 点击连接 编辑 2. 连接成功 3. 订阅主题或者给别的主题发送消息 遇到的问…...
记netty本地客户端断线无法自动重连 or 远程客户端自动重连本地服务端
记netty客户端断线无法自动完成重连 or 服务端无法让客户端断线重连 引场景案例bootstrap 引 netty既能开发socket服务端,也可开发客户端,实现连接的全双工通信。在客户端断线重启后,可自动重连服务端。 场景 本地代码既有socket客户端也有…...
UNIAPP_在js文件中使用i18n国际化
导入 import { initVueI18n } from dcloudio/uni-i18n import messages from /locale/index const { t } initVueI18n(messages) 使用 t(config.request.i001)....
第三节:如何理解Spring的两个特性IOC和AOP(自学Spring boot 3.x第一天)
大家好,我是网创有方,接下来教大家如何理解Spring的两个特性IOC和AOP。本节有点难,大家多理解。 IOC(控制反转) 定义与核心思想: IOC,全称Inversion of Control,即控制反转。 其核…...
【51单片机】串口通信(发送与接收)
文章目录 前言串口通信简介串口通信的原理串口通信的作用串口编程的一些概念仿真图如何使用串口初始化串口串口模式波特率配置 发送与接收发送接收 示例代码 总结 前言 在嵌入式系统的开发中,串口通信是一种常见且重要的通信方式。它以其简单、稳定的特性在各种应用…...
【AI研发工具包】sklearn教程(Scikit-learn)
目录 1. 引言 2. 安装sklearn 3. 导入sklearn 4. 加载数据集 5. 数据预处理 6. 训练模型 7. 评估模型 8. 保存和加载模型 9. 自定义数据 10. 深入sklearn 11. 注意事项 1. 引言 Scikit-learn(简称sklearn)是Python中一个非常流行的机器学习库…...
数位DP——AcWing 1081. 度的数量
数位DP 定义 数位DP是一种动态规划技巧,特别适用于处理与数字的位操作相关的问题,如数字序列的计数、数字的生成等问题。它通过将问题分解为对每一位数字的独立考虑,从而简化问题复杂度,实现高效求解。 数位DP的核心思想是将原…...
2024下半年必追国漫片单,谁将问鼎巅峰?
随着2024年上半年的落幕,国漫市场再度迎来了百花齐放的盛况。从经典续作到全新IP,从玄幻到科幻,每一部作品都以其独特的魅力吸引着观众的目光。本期为大家盘点下半年值得一看的国漫佳作,大胆预测,谁将成为这场神仙打架…...
信息发布小程序h5 uniapp thinkphp
纯手工uniapp thinkphp 全开源打造 信息发布小程序 一、概述 信息发布小程序是一种基于微信平台的小程序应用,旨在为用户提供便捷的信息发布与展示服务。用户可以通过该小程序快速发布各类信息,如招聘、寻物、公告等,同时也可以浏览和搜索…...
Windows定时任务执行脚本
场景:由于网络波动原因导致云数据库没连接上,从而导致某个流程引擎链接不上数据库从而导致该流程引擎服务挂了,网络恢复后 数据库链接正常,但是该引擎服务还是中止状态。 解决方案:在Windows中新建一个定时任务&#…...
优维“统一开放平台”:开放、开发、集成、客制化
基于丰富完善的产品体系,优维重磅推出了统一开放平台。这款由优维自主设计与研发,集数据开发、能力开放、能力集成、客制化为一体的统一开放平台,具备应用市场、应用开发、连接能力、采控平台、API集市、开发者工具等功能模块,可为…...
ChatGPT新纪元:揭秘GPT-4o的多模态能力
GPT-4o登场 探索ChatGPT的多模态创新 今日凌晨,OpenAI向全球宣布了AI发展的新篇章——GPT-4o,每次OpenAI发布重大更新时,尽管令人兴奋,但也不免使众多初创公司的梦想破灭。 GPT-4o的命名中的“o”象征着“omni”——全能的代表。…...
泰勒斯威夫特2022年纽约大学毕业典礼演讲:NYU‘s 2022 Commencement Speaker Taylor Swift
NYU’s 2022 Commencement Speaker Taylor Swift Link: https://www.youtube.com/watch?vOBG50aoUwlI Singer, songwriter, producer, and director Taylor Swift received a Doctor of Fine Arts, honoris causa, at the Commencement for the Class of 2022 and delivered …...
(四)SvelteKit教程:调用外部 API 获取数据
(四)SvelteKit教程:调用 API 我们先按照如下的方式来构建api服务: step 1:npm i json-serverstep 2:在根目录下新建 db.json 文件,内部写入如下内容:{"users": [{"id": 1,"name…...
数据结构-分析期末选择题考点(排序)
何似清歌倚桃李 一炉沈水醉红灯 契子 ✨ 上一期给大家提供了大概会考的题型给老铁们复习的大致思路 这一期还会是一样,我将整理一下排序的题型以及解题方法给你们 由于时间还很多,我就慢慢总结吧,一天一章的样子,明天总结串、后天…...
Python:探索高效、智能的指纹识别技术(简单易懂)
目录 概括 导入库 函数一 参数: 函数二 函数三 主函数 运行结果 src: model_base 7.bmp 编辑 总结 概括 指纹识别是一种基于人体生物特征的身份验证技术。它通过捕捉和分析手指上的独特纹路和细节特征,实现高准确度的身份识别。…...
『SD』AI绘画,不会写提示词怎么办?
提示词 有没有想过,为什么你用 SD 生成的猫是长这样的。 而其他人可以生成这样的猫。 虽然生成的都是猫,但猫与猫之间还是有差距的。 如果你的提示词只是“cat”,那大概率就会出现本文第一张图的那个效果。而如果你加上一些形容词ÿ…...
搭建大型分布式服务(四十二)SpringBoot 无代码侵入实现多Kafka数据源整合插件发布
系列文章目录 文章目录 系列文章目录前言MultiKafkaStarter [V2.2]一、功能特性二、快速开始(生产端)三、快速开始(消费端)四、其它特性五、变更记录六、参考文章 前言 在分布式服务的架构演进中,消息队列作为核心组件…...
电商网站前端开发/如何做市场调研和分析
项目需求: 在现有系统的基础上,实现网站的中英文切换,要求现有代码基本保持不变。 解决方案: 在经过众多的方案筛选后,选出了一个比较合适的方案。方案如下。 首先要实现网站的中英文切换总共分为两部分。 第一部分是…...
wordpress运行/zoho crm
在AWR报告中,log file sync等待事件显著。2.问题原因产生此事件的主要原因是,应用程序在插入数据的时候,采用没插入一条数据,提交一次,通常每批次数据量都较大,而且还会插入日志信息,日志也是没…...
东莞疫情最新动态/优化推广网站怎么做
在做用户信息统计时,发现 安卓6.0系统用户返回的Mac地址都是 02:00:00:00:00:00,被误判为作弊用户,实际上是谷歌在6.0及以后版本对获取wifi及蓝牙MacAddress 做的改动。 Most notably, Local WiFi and Bluetooth MAC addresses are no longe…...
wordpress sql文章/提升关键词
人生应该如蜡烛一样,从顶燃到底,一直都是光明的。 -萧楚女...
ui设计网站模板/seo策略是什么意思
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…...
无锡网站建设哪家做得比较好/建立免费个人网站
微信公众号的编辑器无法打出文中某些诸如 en dash 之类的标点符号,故文中有些标点符号的错误,可以自行百度各种标点符号之间的区别,不影响阅读。美国化学学会曾就数字用法提到如下规则:基数词数字小于10 时用数词(即全拼英文单词)…...