5 分钟学懂 SSH 隧道技术
suiw9 2025-01-21 21:27 21 浏览 0 评论
概述
本文将介绍一些关于 SSH 隧道技术的小技巧,并且给出一个网络拓扑图更好地解释在做的东西。
网络基础
假设我的网络情况是这样的一个简化拓扑:
图 1:简化网络拓扑
那么这里有几种可能的操作,分别是:
- 从 Home PC 直接 SSH Office PC
- 从 Office PC SSH 到 Home PC 同理
- 从 Home PC 直接 SSH 到 VPS
- 从 Office PC SSH 到 VPS 同理
- 从 VPS SSH 到 Home(Office) PC
在这几个场景中,最简单实现的就是:从 Home PC SSH 到 VPS,这也是我们平时最常见的一个操作。只所以我们可以轻松地实现这个原理,是因为 VPS 拥有公网 IP,我们可以直接从 Home PC 中路由到 VPS,反之,因为我们的 Home PC 没有公网 IP,所以 VPS 无法直接 SSH 到我们的 Home PC。
那么这里就会有同学有想法了,那么我们的 Home PC 能不能有公网 IP,答案肯定是可以的,从上图中可以看到,简单来说,PC 和 VPS 的差异就在于 PC 还接了一次路由器,那么如果直接将 PC 介入 ISP 网络中,是不是就可以拥有公网 IP 了。这个问题很复杂,答案是可能是,这依赖于你的 ISP 如果提供网络给你,在以前 ADSL 时代,基本上都是可以提供公网 IP 的,但是,随着光纤的普及,即使你不使用路由器,你也不是直接介入 ISP 的骨干网了,而是 ISP 的一个分线器,例如 FTTB 系列。所以,这里设想让 PC(路由器) 拥有公网 IP 的想法不具有通用性,加上即使有,ISP 可能也会限制一些端口,因此用的也不多。
SSH 隧道
所以,终于进入到本文的主题了,既然没法直接连接到 PC,那么可不可以反过来,让 PC 自己主动来发起请求,这就是 SSH 隧道的原理了:
[root@liqiang.io]# ssh -qngfNTR 9999:localhost:8888 root@192.168.29.48
命令行快速使用
[root@liqiang.io]# cat ~/.ssh/config
Host jump
HostName 10.0.0.102
Port 22
User root
IdentityFile /root/.ssh/id_rsa
ForwardAgent yes
Host 10.0.0.87
HostName 10.0.0.87
ProxyJump jump
User zhangsan
- 首先需要确保可以直接登录跳板机:10.0.0.102;
- 10.0.0.87 是通过 10.0.0.102 这个跳板机访问的;
Tips
反向隧道只监听 localhost
[root@liqiang.io]# cat /etc/ssh/sshd_config
GatewayPorts = yes
代理 UDP
反向代理
- 本地机器:
[root@liqiang.io]# yum install -y nc
[root@liqiang.io]# mkfifo /tmp/fifo
[root@liqiang.io]# nc -l -p 1162 < /tmp/fifo | nc -u localhost 1163 > /tmp/fifo
- 这里的意思是说监听机器上的 1162 端口发出来的数据,然后以 UDP 的形式将数据发送给 localhost:1163。
- 远程机器
[root@liqiang.io]# mkfifo /tmp/fifo
[root@liqiang.io]# nc -l -u -p 1163 < /tmp/fifo | nc localhost 1162 > /tmp/fifo
- 这里的意思是在机器上监听 1163 端口的 UDP 协议,然后将收到的 UDP 流量通过 TCP 链路 localhost:1162 发送出去。
- 注意要点
- 必须先在本地执行完命令之后再去远程服务器执行,不然,服务器这边会因为没有数据而导致无法正常运行;
- 在使用过程中我遇到了一个问题就是这种方式只能接收一次 UDP,第二次就无法接收成功了;
- 这是反向代理的例子,正向代理反过来即是。
参考文档
- How to make a SSH tunnel publicly accessible?
- Performing UDP tunneling through an SSH connection
- How to use ansible openstack modules with a ssh socks proxy
- SSH Tunneling Technology Guide
- 上一篇:多种方法 实现远程访问Mac
- 下一篇:一款多功能的SSH远程服务器管理工具
相关推荐
- 俄罗斯的 HTTPS 也要被废了?(俄罗斯网站关闭)
-
发布该推文的ScottHelme是一名黑客,SecurityHeaders和ReportUri的创始人、Pluralsight作者、BBC常驻黑客。他表示,CAs现在似乎正在停止为俄罗斯域名颁发...
- 如何强制所有流量使用 HTTPS一网上用户
-
如何强制所有流量使用HTTPS一网上用户使用.htaccess强制流量到https的最常见方法可能是使用.htaccess重定向请求。.htaccess是一个简单的文本文件,简称为“.h...
- https和http的区别(https和http有何区别)
-
“HTTPS和HTTP都是数据传输的应用层协议,区别在于HTTPS比HTTP安全”。区别在哪里,我们接着往下看:...
- 快码住!带你十分钟搞懂HTTP与HTTPS协议及请求的区别
-
什么是协议?网络协议是计算机之间为了实现网络通信从而达成的一种“约定”或“规则”,正是因为这个“规则”的存在,不同厂商的生产设备、及不同操作系统组成的计算机之间,才可以实现通信。简单来说,计算机与网络...
- 简述HTTPS工作原理(简述https原理,以及与http的区别)
-
https是在http协议的基础上加了一层SSL(由网景公司开发),加密由ssl实现,它的目的是为用户提供对网站服务器的身份认证(需要CA),以至于保护交换数据的隐私和完整性,原理如图示。1、客户端发...
- 21、HTTPS 有几次握手和挥手?HTTPS 的原理什么是(高薪 常问)
-
HTTPS是3次握手和4次挥手,和HTTP是一样的。HTTPS的原理...
- 一次安全可靠的通信——HTTPS原理
-
为什么HTTPS协议就比HTTP安全呢?一次安全可靠的通信应该包含什么东西呢,这篇文章我会尝试讲清楚这些细节。Alice与Bob的通信...
- 为什么有的网站没有使用https(为什么有的网站点不开)
-
有的网站没有使用HTTPS的原因可能涉及多个方面,以下是.com、.top域名的一些见解:服务器性能限制:HTTPS使用公钥加密和私钥解密技术,这要求服务器具备足够的计算能力来处理加解密操作。如果服务...
- HTTPS是什么?加密原理和证书。SSL/TLS握手过程
-
秘钥的产生过程非对称加密...
- 图解HTTPS「转」(图解http 完整版 彩色版 pdf)
-
我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。...
- HTTP 和 HTTPS 有何不同?一文带你全面了解
-
随着互联网时代的高速发展,Web服务器和客户端之间的安全通信需求也越来越高。HTTP和HTTPS是两种广泛使用的Web通信协议。本文将介绍HTTP和HTTPS的区别,并探讨为什么HTTPS已成为We...
- HTTP与HTTPS的区别,详细介绍(http与https有什么区别)
-
HTTP与HTTPS介绍超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的...
- 一文让你轻松掌握 HTTPS(https详解)
-
一文让你轻松掌握HTTPS原文作者:UC国际研发泽原写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。...
- 如何在Spring Boot应用程序上启用HTTPS?
-
HTTPS是HTTP的安全版本,旨在提供传输层安全性(TLS)[安全套接字层(SSL)的后继产品],这是地址栏中的挂锁图标,用于在Web服务器和浏览器之间建立加密连接。HTTPS加密每个数据包以安全方...
- 一文彻底搞明白Http以及Https(http0)
-
早期以信息发布为主的Web1.0时代,HTTP已可以满足绝大部分需要。证书费用、服务器的计算资源都比较昂贵,作为HTTP安全扩展的HTTPS,通常只应用在登录、交易等少数环境中。但随着越来越多的重要...
你 发表评论:
欢迎- 一周热门
-
-
Linux:Ubuntu22.04上安装python3.11,简单易上手
-
宝马阿布达比分公司推出独特M4升级套件,整套升级约在20万
-
MATLAB中图片保存的五种方法(一)(matlab中保存图片命令)
-
别再傻傻搞不清楚Workstation Player和Workstation Pro的区别了
-
Linux上使用tinyproxy快速搭建HTTP/HTTPS代理器
-
如何提取、修改、强刷A卡bios a卡刷bios工具
-
Element Plus 的 Dialog 组件实现点击遮罩层不关闭对话框
-
日本组合“岚”将于2020年12月31日停止团体活动
-
SpringCloud OpenFeign 使用 okhttp 发送 HTTP 请求与 HTTP/2 探索
-
tinymce 号称富文本编辑器世界第一,大家同意么?
-
- 最近发表
- 标签列表
-
- dialog.js (57)
- importnew (44)
- windows93网页版 (44)
- yii2框架的优缺点 (45)
- tinyeditor (45)
- qt5.5 (60)
- windowsserver2016镜像下载 (52)
- okhttputils (51)
- android-gif-drawable (53)
- 时间轴插件 (56)
- docker systemd (65)
- slider.js (47)
- android webview缓存 (46)
- pagination.js (59)
- loadjs (62)
- openssl1.0.2 (48)
- velocity模板引擎 (48)
- pcre library (47)
- zabbix微信报警脚本 (63)
- jnetpcap (49)
- pdfrenderer (43)
- fastutil (48)
- uinavigationcontroller (53)
- bitbucket.org (44)
- python websocket-client (47)