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

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)
Name:3ddown Serial:FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名:Axure 序列号:8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...

从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...