SSH隧道技术

SSH隧道

简介

SSH隧道是一种通过SSH协议在两个网络节点之间建立安全通信的技术。它可以用于多种用途,包括加密和保护敏感数据传输、绕过防火墙限制、远程访问内部服务等。

应用:

  1. 端口转发:SSH隧道可以将本地端口转发到远程主机上,从而实现本地服务的安全远程访问。例如,你可以将本地的MySQL数据库端口转发到远程服务器上,以便在本地使用MySQL客户端连接和管理远程数据库。
  2. 动态端口转发:SSH隧道还支持动态端口转发,也称为SSH SOCKS代理。通过配置本地浏览器或其他应用程序使用SSH SOCKS代理,你可以将网络流量通过SSH隧道转发到远程主机,从而实现绕过防火墙限制、访问受限网站等功能。
  3. 文件传输: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端口,这样就实现了由内网到内网的访问了。

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

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

相关文章

Python学习从0到1 day5 python基础语法3 数据类型及数据类型转换

一切都会好的,我一直相信 ——24.1.17 一、数据类型 1.数据是有类型的 目前主要接触如下三类数据类型: 2.type()语句 我们可以通过type()语句来得到数据的类型 语法:type(被查看类型的数据) a 10 type(a) print(type(a)) print(type(11…

分子动力学模拟—LAMMPS 模拟(固体和液体)数据后处理软件(六)

记录一下检索到一篇分子动力学模拟数据后处理的软件。 感谢论文的原作者! 主要功能: Structure Analysis Ackland Jones Analysis CentroSymmetry Parameter Common Neighbor Analysis Common Neighbor Parameter Atomic Structure Entropy Stein…

IOS-高德地图连续定位-Swift

使用定位功能需要需要接入高德地图定位Api: pod AMapLocation配置Info 在info中新建一个名为Privacy - Location Temporary Usage Description Dictionary的字典,然后在这个字典下新建Privacy - Location When In Use Usage Description、Privacy - Lo…

【​电力电子在电力系统中的应用​】6 滞环电流控制的PWM整流器 + STATCOM整流器 + APF仿真

【仅供参考】 【2023.06西南交大电力电子在电力系统中的应用】 目录 步骤一:基于滞环电流控制的PWM整流器仿真 1.1 仿真要求 1.2 仿真电路原理及设计 1.2.1 主电路的搭建 1.2.2 控制电路的搭建 1.3 波形分析 步骤二:从PWM整流器到STATCOM仿真 2…

使用ProxySql实现Mysql的读写分离 详细安装步骤 亲测可行

主机ip说明192.168.168.109ProxySql192.168.168.77mysql master(主)192.168.168.78mysql slave(从) 1.下载ProxySql安装包 在192.168.168.109机器上操作 https://github.com/sysown/proxysql/releases/download/v2.5.5/proxysql-2.5.5-1-ce…

阿里云ack集群管理及故障处理

一、集群管理维护 二、常见故障处理 存储: 网络 弹性伸缩 service

Microsoft Word 设置底纹

Microsoft Word 设置底纹 References 打开文档页面,选中特定段落或全部文档 在“段落”中单击“边框”下三角按钮 在列表中选择“边框和底纹”选项 在“边框和底纹”对话框中单击“底纹”选项卡 在图案样式和图案颜色列表中设置合适颜色的底纹,单击“确…

利用蓝图直接提升客户服务体验的方法

简单地说,流程就是按顺序执行的一系列操作过程。每项行动都有一个结果,而这个结果又会成为该序列中下一项行动的输入。客户服务流程的建立目的是为了保持一致性、提高效率并帮助组织管理规模。不过,在实际操作的过程中,他们会遇到…

C#判断输入的数字是否符合货币格式

目录 一、用正则表达式判断输入是否符合货币格式 二、用double.TryParse()判断输入是否符合货币格式 一、用正则表达式判断输入是否符合货币格式 // 判断输入是否货币合格 using System.Text.RegularExpressions; namespace IsCurrency_Format {partial class Program{stati…

直播间的秒杀狂热背后,猫眼电影如何接住10w+并发运营活动?

“倒数,5、4、3、2、1” “10万张!” “20秒没了” 上周末,张家辉和导演马浴柯带着新电影《怒潮》上了疯狂小杨哥的直播间,人数一度冲破80万人。 这次直播,是猫眼电影为新电影《怒潮》准备的一次宣传活动。 随着小…

44.5K Star,简单易用自动化运维监控工具

Hi,骚年,我是大 G,公众号「GitHub指北」会推荐 GitHub 上有趣有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注。 今天介绍一个开源的自动化运维监控工具,它是一个轻量的开源…

【银行测试】银行项目,信用卡业务测试+常问面试(三)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 银行测试-信用卡业…

3D划桨效果,效果请看gif图

纯本地文件的html <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><meta name"Keywords" content""><meta name"Description" content""><title>please…

跨Android、iOS、鸿蒙多平台框架ArkUI-X

ArkUI是一套构建分布式应用界面的声明式UI开发框架。它使用极简的UI信息语法、丰富的UI组件、以及实时界面预览工具&#xff0c;帮助您提升移动应用界面开发效率30%。您只需使用一套ArkTS API&#xff0c;就能在Android、iOS、鸿蒙多个平台上提供生动而流畅的用户界面体验。 一…

Nginx深度解析

Nginx是一个开源的高性能Web服务器&#xff0c;广泛用于提供HTTP服务。 它以其高效能、稳定性和低资源消耗而闻名。 Nginx的核心特性 异步非阻塞事件驱动架构&#xff1a;Nginx的主要优势之一是它的异步非阻塞处理方式&#xff0c;这使得它在处理大量并发连接时非常高效。轻量…

Spring 中 HttpServletRequest 作为成员变量是安全的吗?

在使用spring框架开发的时候&#xff0c;经常会在controller类中看到 HttpServletRequest 对象参数&#xff0c;一般我们都是直接使用&#xff0c;但是它是何时、怎么注入到 spring 容器的呢 &#xff1f;另外以成员变量注入的 request 是线程安全的吗 ? Controller public c…

关于微信小程序 “扫普通链接二维码打开小程序”动态传递多个参数开发过程记录与总结

前言&#xff1a;项目中需要线下 扫描二维码 进入到小程序指定的页面&#xff0c;二维码中 要动态传递多个参数&#xff0c;接下来看看具体怎么实现&#xff0c;整个过程还比较顺利&#xff0c;特把整个过程中遇到的坑点做以总结。 快速跳转官网文档介绍&#xff1a;扫码打开小…

【数据结构】二叉树(遍历,递归)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​​ 目录 二叉树遍历规则 前序遍历 ​…

Pure-admin框架 Pure-table中获取所选中的内容的信息

最近在尝试使用Pure-admin框架来进行开发&#xff0c;正好遇到了多选表格需要获取选中项的id的情况&#xff0c;因为平台介绍说是二次封装 element-plus 的 Table &#xff0c;直接拿el-table的方法来试 在table上设置属性ref"multipleTableRef" let idArr [];mult…

使用Python的pygame库实现下雪的效果

使用Python的pygame库实现下雪的效果 关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 先给出效果图&#xff1a; 源码如下&#xff1a; import pygame import random# 初始化pygame pygame.init()# 设置屏幕尺寸 width…