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设置相关操作,这样可以让不同国家的…...

未来能源转型之路:2023年第十三届中国国际储能大会启示录
在2023年第十三届中国国际储能大会上,全球各地的能源专家、学者和企业代表齐聚一堂,共同探讨了储能技术在推动能源转型中的重要作用。对于我们普通人来说,从这场大会中可以学到什么呢? 一、储能技术是未来能源发展的关键 随着可再…...

rviz可视化机械臂(python)
一、准备的东西 一个机械臂的urdf 规划的路径点 二、launch文件的撰写 1.初始化 <?xml version"1.0" encoding"utf-8"?> <launch><param name"robot_description" textfile"机械臂.urdf" /><node name&qu…...

《设计模式的艺术》笔记 - 享元模式
介绍 享元模式运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式ÿ…...

ubuntu系统(10):使用samba共享linux主机中文件
目录 一、samba安装步骤 1、Linux主机端操作 (1)安装sabma (2)修改samba配置文件 (3)为user_name用户设置samba访问的密码 (4)重启samba服务 2、Windows端 二、使用 1、代码…...

数据集成时表模型同步方法解析
01 背景介绍 数据治理的第一步,也是数据中台的一个基础功能 — 即将来自各类业务数据源的数据,同步集成至中台 ODS 层。业务数据源多种多样,单单可能涉及到的主流关系型数据库就有近十种。功能更加全面的数据中台通常还具有对接非关系型数据…...

彻底解决charles抓包https乱码的问题
最近做js逆向,听说charles比浏览器抓包更好用,结果发现全是乱码,根本没法用。 然后查询网上水文:全部都是装证书,根本没用! 最后终于找到解决办法,在这里记录一下: 乱码的根本原因…...

Towards Robust Blind Face Restoration with Codebook Lookup Transformer
Towards Real World Blind Face Restoration with Generative Facial Prior 这个projec相对codeformer已经是老一些的了,CodeFormer paper说自己的效果比这个更好。 有看了这个视频,它借用了R-ESRGAN 4x 和 GFPGAN 50%,既保留了一些人物特征…...

flutter3使用dio库发送FormData数据格式时候的坑,和get库冲突解决办法
问题描述 问题1:当你使用FormData.from(Flutter3直接不能用)的时候,可能会提示没有这个方法,或者使用FormData.fromMap(flutter3的dio支持)的时候也提示没有,这时候可能就是和get库里面的Formdata冲突了 问题1:The me…...

matlab读取pwm波数据,不用timer的方法,这里可以参考。Matlab/Simulink之STM32开发-编码器测速
这里提供了一个不用timer的方法,可以参考: https://blog.csdn.net/weixin_36967309/article/details/88699830 Matlab/Simulink之STM32开发-编码器测速...

使用 Python 创造你自己的计算机游戏(游戏编程快速上手)第四版:第十九章到第二十一章
十九、碰撞检测 原文:inventwithpython.com/invent4thed/chapter19.html 译者:飞龙 协议:CC BY-NC-SA 4.0 碰撞检测涉及确定屏幕上的两个物体何时相互接触(即发生碰撞)。碰撞检测对于游戏非常有用。例如,如…...