SSH隧道技术
SSH隧道
简介
SSH隧道是一种通过SSH协议在两个网络节点之间建立安全通信的技术。它可以用于多种用途,包括加密和保护敏感数据传输、绕过防火墙限制、远程访问内部服务等。
应用:
- 端口转发:SSH隧道可以将本地端口转发到远程主机上,从而实现本地服务的安全远程访问。例如,你可以将本地的MySQL数据库端口转发到远程服务器上,以便在本地使用MySQL客户端连接和管理远程数据库。
- 动态端口转发:SSH隧道还支持动态端口转发,也称为SSH SOCKS代理。通过配置本地浏览器或其他应用程序使用SSH SOCKS代理,你可以将网络流量通过SSH隧道转发到远程主机,从而实现绕过防火墙限制、访问受限网站等功能。
- 文件传输:SSH隧道可以用于安全地传输文件。你可以使用SCP或SFTP等SSH协议支持的文件传输工具,通过SSH隧道将文件从本地传输到远程主机,或者从远程主机传输到本地。
原理:
SSH隧道的原理基于SSH协议的加密和身份验证机制。当你建立一个SSH连接时,客户端和服务器之间会进行身份验证,并协商加密算法和密钥。一旦身份验证和密钥协商完成,SSH连接就建立起来了。
SSH隧道的建立是在SSH连接上创建一个加密的通道,用于在两个网络节点之间传输数据。它通过在SSH连接上进行端口转发或动态端口转发来实现。
在端口转发中,客户端将本地端口与远程主机和端口关联起来。当本地应用程序连接到本地端口时,数据会被加密并通过SSH连接发送到远程主机,然后转发到远程端口。类似地,远程主机的响应数据会通过SSH连接返回到本地应用程序。
在动态端口转发中,客户端将本地端口配置为一个SOCKS代理。当本地应用程序使用该代理发送网络请求时,请求会通过SSH连接转发到远程主机,然后由远程主机发送到目标服务器。远程主机将响应数据返回到本地应用程序,从而实现了绕过防火墙限制和访问受限网站的功能。
相关参数
-N:指定这个SSH连接只进行端口消息转发,不执行任何SSH远程命令;
-L:指定本地监听的地址和端口;
-f: 这个SSH会话放入后台运行,不加这个参数的话,当退出当前SSH -L指定的终端时,端口转发进程就结束了,端口转发送也就结束了。所以务必要加上-f参数。
-g: 启用网关功能
-R: 远程端口
-D: 动态转发
-C: 压缩传输,提高效率
-p: 指定ssh端口,当为默认端口22时,可以不添加此参数
应用场景
socks5代理 (SSH动态端口转发)

假设有如上场景,内网主机和web服务器互通,但是不通外网,而web服务器即可以访问内网主机也可以访问互联网,此时,我们可以通过web服务器的ssh服务,来搭建一个ssh socks5代理,这样内网主机就可以和互联网互通进行文件和数据传输,此时,web服务器就变成了内网主机的代理服务器。
具体操作
内网主机中执行下面命令
ssh -qTfnN -D 7070 root@x.x.x.x
此时,此时该主机的7070端口的流量就会转发到web服务,进而传输给互联网
在kali中使用上面命令,输入密码之后会无回显,然后编辑/etc/proxychains4.conf为如下内容

然后执行proxychains4 curl www.baidu.com即可看出成功出网

ssh本地转发

假设有如下场景:
- 本地主机可以访问互联网,也可以访问web服务器,但是无法访问内网主机
- web服务器可以访问互联网也可以访问内网主机
- 内网主机只能访问web服务器,但是不能访问互联网
此时web服务器可以使用ssh转发将本地主机的流量转发给内网主机,本地主机只需要访问web服务器的某个端口就能访问到内网主机的某个端口上,具体端口根据操作的命令来定
在本地主机上执行下面命令
ssh -L 6666:10.10.10.2:80 root@1.1.1.1 -fN
此时本机当本地主机访问本地的6666端口时,就相当于访问内网主机10.10.10.2的80端口,此外,我在博客园“骏马金龙”的一篇文章中看到一个有意思的思路,在上面的这个命令中,其实只能让本地主机192.168.162.131访问自身的6666端口,不可以让同一网段的主机访问192.168.162.131:6666 进而来实现访问10.10.10.2:80端口,只要再加一个-g 参数就可以了,具体命令如下:
ssh -L -g 192.168.162.131:6666:10.10.10.2:80 root@1.1.1.1 -fN #同192.168.162.1/24网段的主机可以通过访问192.168.162.131:6666来实现对10.10.10.2:80的访问
将本地端口转发到远程主机

假设有如上场景,1.1.1.1的服务器上部署了mysql服务,但是该服务器只能运行本地连接,此时可以通过ssh端口转发,将本地端口转发给远程服务器的端口,当我们访问本地端口3307就相当于访问了服务器的mysql服务
具体操作
ssh -L 3307:localhost:3306 root@1.1.1.1 -fN #将本地的3307端口转发给远程1.1.1.1的3306
这个命令的作用是在本地主机上建立一个SSH本地端口转发,将本地主机的3307端口转发到远程主机的3306端口。通过这个SSH本地端口转发,可以在本地主机上通过访问3307端口来访问远程主机的MySQL数据库服务。
将远程主机端口转发到本地

假设有如上场景,我们在内网主机上面部署一个服务,我们的本地主机是无法访问的,不过有一台公网服务器可以使用,我们可以借助这台服务器当作中间人,但是公网服务器有没办法直接访问内网主机,只能有内网主机主动访问公网服务器,所以此时就需要ssh远程转发来实现我们的目标。
内网主机执行命令:
ssh -N -R 9999:127.0.0.1:8080 root@1.1.1.1 #将远程主机9999端口转发到本地8081
执行上面的命令之后,本地主机访问公网服务器的9999端口,公网服务器会将访问流量转发到内网主机的8080端口,这样就实现了由内网到内网的访问了。
相关文章:
SSH隧道技术
SSH隧道 简介 SSH隧道是一种通过SSH协议在两个网络节点之间建立安全通信的技术。它可以用于多种用途,包括加密和保护敏感数据传输、绕过防火墙限制、远程访问内部服务等。 应用: 端口转发:SSH隧道可以将本地端口转发到远程主机上…...
支付功能的实现
1.商户调用第三方支付服务的主要步骤流程? 1.1 表单跳转 前端点击提交支付,请求后端支付接口 支付接口通过阿里api生成表单信息返回给前端页面 同步回调,异步回调参数 请求参数:总金额,外部订单号 公共参数࿱…...
SpringMVC JSON数据处理见解6
6.JSON数据处理 6.1.添加json依赖 springmvc 默认使用jackson作为json类库,不需要修改applicationContext-servlet.xml任何配置,只需引入以下类库springmvc就可以处理json数据: <!--spring-json依赖--> <dependency><groupId>com.f…...
python 读写kafka
1. 安装pykafka pip install pykafka2. 生产者 from pykafka import KafkaClientdef get_kafka_producer(hosts, topics):client KafkaClient(hostshosts)print(client.topics)topic client.topics[topics]producer topic.get_producer()return producer 测试 hosts 19…...
VBA: 如何用VBA遍历文件夹(含子文件夹)里的所有文件
目录 0 原始文件 1 step1:遍历文件夹(不包含子文件)内的文件数 2 step2: 遍历文件夹内的所有子文件夹的名字 3 step3 遍历文件夹的(含子文件)内的所有文件 4 step4 遍历文件夹的(含子文件)内的所有文…...
又快又好! 基于Consistency Model的一步采样歌声转换模型CoMoSVC已开源
在2023年,AI虚拟歌手如AI孙燕姿等已经引起了广泛的关注,而大多数应用都是基于开源框架SoVITS。最近,香港科技大学和微软亚洲研究院推出了一种基于Consistency Model的歌声转换系统CoMoSVC,它在歌声转换速度上与基于Flow的SoVITS系…...
服务器——配置免密登录
一、生成本机的密钥文件 打开本机的终端,输入 ssh-keygen,默认一路点enter。 将生成的 id_rsa.pub 公钥文件,复制一份改一个名称,比如改名成 id_rsa_test.pub。 二、将生成的公钥文件发送到服务器对应账户的.ssh文件夹下 将改…...
GoZero微服务个人探索之路(三)Go-Zero官方rpc demo示例探究
官方网址:https://go-zero.dev/docs/tasks/cli/grpc-demo 项目结构 demo包 两个文件均为protoc-gen-go-grpc自动生成构成一个完整的 gRPC 服务的定义和实现 democlient包 demo.go goctl生成的客户端代码 Request 和 Response 别名: 定义了 Request 和…...
1月下半笔记(个人向)
最近才开始看d2l(这种东西早该在两年前看的,拖到现在了) 为了做项目还得学一手OpenGL(被windows安装GLFW逼疯了) 1.15 打完ICPC EC final回来,也许可以出一篇博客写下简单的题解。 对蛋白质相似空间子结…...
ChatGpt使用技巧
通用类技巧 角色扮演 比如让ChatGpt扮演500强营销专家 告诉ChatGpt你的身份。初学者、或是有一定能力、知识的学习者等 限制ChatGpt回答长度 100~200字之间 让ChatGpt一步一步思考 他会预测下一个单词,根据prompt进行生成 明确你的要求和目的 说清楚问题&#x…...
自动安装解压版mysql8的脚本
由于mysql 8的 MSI 安装包,自动把程序安装到了C盘,且没看到有可以更改安装位置的配置可以修改。 故自行写了一个脚本,用来安装mysql 8的压缩包。可以将 mysql 8 以及其 Data目录 安装到C盘以外的位置。第一次写 bat 脚本,希望各位…...
第二讲_HarmonyOS应用创建和运行
HarmonyOS应用创建和运行 1. 创建一个HarmonyOS应用2. 运行新项目2.1 创建本地模拟器2.2 启动本地模拟器2.3 在本地模拟器运行项目 1. 创建一个HarmonyOS应用 打开DevEco Studio,在欢迎页单击Create Project,创建一个新工程。 选择创建Application应用。…...
Android车载系统Car模块架构链路分析
一、模块主要成员 CarServiceHelperService SystemServer 中专门为 AAOS 设立的系统服务,用来管理车机的核心服务 CarService。该系统服务的具体实现在 CarServiceHelperServiceUpdatableImpl CarService Car模块核心服务APP,Android 13版本开始分为…...
C语言经典算法之顺序查找算法
目录 前言 A.建议 B.简介 一 代码实现 二 算法时空复杂度 A.时间复杂度: B.空间复杂度: 三 优点和缺点 A.优点: B.缺点: 四 现实中的应用 前言 A.建议 1.学习算法最重要的是理解算法的每一步,而不是记住算…...
c语言嵌套循环
c语言嵌套循环 c语言嵌套循环 c语言嵌套循环一、c语言嵌套循环格式二、嵌套循环案例九九惩罚口诀 一、c语言嵌套循环格式 for(初始值;表达式;表达式) {for(初始值;表达式;表达式){代码} }int main() {for (…...
磁盘位置不可用怎么修复?
磁盘位置不可用是计算机使用中经常遇到的问题。造成磁盘位置不可用的原因有多种,其中最常见的是磁盘文件系统损坏。当文件系统损坏时,操作系统无法正常访问磁盘上的数据,导致磁盘位置不可用。 磁盘位置不可用怎么修复? 当磁盘位置…...
【总结】Linux命令中文帮助手册
1. 为什么要总结Linux命令中文帮助手册 Linux 官方并不提供中文的 help、man 帮助手册。网络上已有的前人翻译过的中文手册版本比较老,且翻译存在误差。从记忆角度来看,Linux 很多命令都不一定记得住详细的用法,易遗忘,缺少经验总…...
[贪心算法] 国王游戏
题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 n 位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大…...
meter报OOM错误,如何解决?
根据在之前的压测过程碰到的问题,今天稍微总结总结,以后方便自己查找。 一、单台Mac进行压测时候,压测客户端Jmeter启动超过2000个线程,Jmeter报OOM错误,如何解决? 解答:单台Mac配置内存为8G&…...
第二百六十九回
文章目录 概念介绍设置方法示例代码内容总结 我们在上一章回中介绍了Card Widget相关的内容,本章回中将介绍国际化设置.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的国际化设置是指在App设置相关操作,这样可以让不同国家的…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
