当前位置: 首页 > news >正文

30、【Ubuntu】【远程开发】内网穿透:反向隧道建立(二)

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Ubuntu】【远程开发】内网穿透:反向隧道建立(一)
分析了 SSH 建立反向隧道的关键选项 -R,并分析了 bind_address 的作用,下面继续

内网穿透

回到 -R 选项,还是第一种形式
在这里插入图片描述

  • bind_address 上篇 blog 已经解释了
  • port:公网端口,在远程服务器上监听的端口号
  • host:主机 ip,这里直接填 localhost 即可,主机为本地服务器
  • hostport:本地服务器上的端口(比如 localhost:22 是本地 SSH)

OK,再来看 -R 选项的详细描述,其功能可以在远程服务器(比如云主机)上监听一个端口,所有连到这个端口的流量,都会被 SSH 隧道转发回主动连接远程服务器的本地电脑里,举个形象点的比喻,就像在远程服务器上开一个门(端口),任何人敲这个门,SSH 就会通过加密隧道把请求转回到主动连接的本地机器上,连接到指定的服务

在这里插入图片描述

可以看到,其工作原理就是 SSH 先在远程服务器上创建一个监听套接字,当有人连接这个端口时,SSH 就把这个连接通过已建立的加密隧道传回本地机器里,然后本地机器再根据指定的目标发起新的连接

在这里插入图片描述

如果想在服务器上监听特权端口的话,就必须用 root 用户登录服务器,关于特权端口的定义,可以参考 IANA 官方的端口分配策略(IANA 就是之前说过的负责分配互联网 IP 地址范围的机构)IANA Port Numbers
在这里插入图片描述
可以看到,端口范围被分成了三类

  • System Ports:范围 0~1023,分配给系统级服务,比如 HTTP/80SSH/22 等,一般和 root 权限绑定
  • User Ports:范围 1024~49151,可以注册给用户使用
  • Dynamic/Private Ports:范围 49152~65535,临时使用

所以可以看出来,端口号小于 1024 的是特权端口,比如 80443,如果想在服务器上监听这些特权端口,就得用 root 用户登录服务器,不然只能用 ≥1024 的端口

-R 选项中,比较关键的,还有下面这段描述
在这里插入图片描述
默认情况下,SSH 在远程服务器上监听的 TCP 端口,只会绑定到回环地址 127.0.0.1,也就是 bind_address 为空的情况,bind_address 为空的情况,上篇 blog 【Ubuntu】【远程开发】内网穿透:反向隧道建立(一) 已经详细讲了,这样主要是出于安全考虑,防止无意中把内网服务暴露到公网

这个默认行为可以通过指定 bind_address 来覆盖(也就是改变绑定的 IP 地址),比如 0.0.0.0:(IPv4),::: (IPv6),*:(IPv4+IPv6),实践中几乎都用 *:0.0.0.0:,允许所有 IP 访问

这里最关键的是后面这句话,只有当服务器的 sshd 配置中启用了 GatewayPorts,指定的 bind_address(比如 0.0.0.0:*:)才会生效,否则会被忽略,仍只绑定 127.0.0.1 回环地址

关于 GatewayPorts 的配置,在终端输入

man 5 sshd_config

可以打开 sshd 配置的用户说明,找到 GatewayPorts 选项关键字
在这里插入图片描述
GatewayPorts 这个选项控制是否允许其他远程主机连接到为客户端设置的端口转发服务,这里有两个名词,一个是其他远程主机,一个是客户端,画个图就明白了
在这里插入图片描述

在准备搭建的内网穿透环境中,其他远程主机就是在外地的用户,客户端就是内网的服务器,云服务器作为 server 只是做一个转发功能,所以这里的

  • remote hosts:指除了云服务器和内网服务器以外的其他机器,比如在外地的用户
  • ports forwarded for the client:这个词很常见了,在 -R 选项中,指内网服务器通过反向隧道在 SSH 云服务器上开启的监听端口

OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Ubuntu】【远程开发】内网穿透:反向隧道建立(三)

http://www.dtcms.com/a/611112.html

相关文章:

  • 文化厅网站建设审核报告单无锡正规网站seo公司
  • Swift中View和ViewController的生命周期
  • 网站建设是前端么网站开发的岗位及职责
  • 视频网站建设的意义论文网络营销导向网站建设的基础
  • iTwin开源包系列(二)grid组件
  • wordpress编辑器插件ueditorseo搜索引擎优化原理
  • 青岛哪家公司做网站好网站建设需求调研
  • Java线程池原理深度解析
  • AI入门知识之RAFT方法:基于微调的RAG优化技术详解
  • 怎么用word做一个网站网络企业做网站
  • 百度做网站教程房地产集团网站建设方案
  • 文心 5.0:原生全模态时代的技术分水岭
  • 多模式融合(GFS/GRAPES/ICON/GEM)在新能源预测中的对比与加权(工程版)
  • 25级第一次测试题解
  • 常用网站域名学做窗帘的网站
  • 网站制作基础教程网站建设的软件平台
  • MySQL数据库操作完全指南:从创建到管理的完整教程
  • C语言编译器在线编译 | 提供快速高效的C语言编译环境,适用于学习与开发
  • 临沂做网站的公司有哪些php网站开发难吗
  • epoll 事件全集、每个事件的含义、哪些事件在实际服务器中最常见、哪些会组合出现
  • 手机网站根目录建设银行登录网站
  • 磁共振成像原理(理论)31:基本梯度回波成像 (Basic Gradient-Echo Imaging)
  • 庐江县住房和城乡建设局网站网站建设的维护范围
  • ASC学习笔记0008:用于注册能力按键输入的回调
  • 邯郸市做网站广西远昌建设公司
  • 网站标题切换无版权的图片素材网站
  • Linux入门---vim编辑器
  • 网站建设服务代理商全面的上海代理注册公司
  • 8.Collections.synchronizedMap 与 ConcurrentMap 的区别与适用场景
  • PHP操作redis