【服务器】端口映射


文章目录

  • 1.端口映射的概念
    • 1.1 端口映射的类型
    • 1.2 端口映射的应用场景
    • 1.3 示例
  • 2.为什么要进行端口映射呢?
  • 3.原理
    • 3.1【大白话】原理解释
    • 3.2 原理图
  • 4.代码


1.端口映射的概念

端口映射(Port Mapping),也称为端口转发(Port Forwarding),是一种将一个网络端口的数据流重定向到另一个网络端口的技术。这通常用于在防火墙或路由器后面运行的服务,使外部设备可以访问内部网络中的特定服务。端口映射可以在本地网络中进行,也可以跨网络进行,通过SSH等协议实现。

1.1 端口映射的类型

  1. 本地端口映射(Local Port Forwarding)

    • 将本地计算机的某个端口映射到远程服务器的某个端口。
    • 示例:将本地端口8080映射到远程服务器的80端口,从而可以在本地通过localhost:8080访问远程服务器的Web服务。
  2. 远程端口映射(Remote Port Forwarding)

    • 将远程服务器的某个端口映射到本地计算机的某个端口。
    • 示例:将远程服务器的2222端口映射到本地计算机的22端口,从而可以通过远程服务器访问本地计算机的SSH服务。
  3. 动态端口映射(Dynamic Port Forwarding)

    • 创建一个SOCKS代理,通过它可以动态地访问多个远程服务器的端口。
    • 示例:创建一个SOCKS代理,允许浏览器通过该代理访问多个远程服务器的网站。

1.2 端口映射的应用场景

  1. 远程访问内部服务:通过端口映射,可以从外部网络访问公司内部或家庭网络中的特定服务,例如Web服务器、数据库服务器等。

  2. 穿透防火墙:通过端口映射,可以绕过防火墙的限制,访问被防火墙阻止的服务。

  3. 提高安全性:通过SSH隧道进行端口映射,可以加密数据传输,提高安全性。

  4. 负载均衡和代理:负载均衡器和代理服务器常常使用端口映射技术来分发和转发流量,提高服务的可靠性和性能。

1.3 示例

假设有一个运行在远程服务器上的Web服务,它监听的端口是80。为了从本地计算机访问这个服务,可以使用以下SSH命令创建一个本地端口映射:

ssh -L 8080:localhost:80 user@remote-server

这条命令将本地计算机的8080端口映射到远程服务器的80端口。现在,在本地浏览器中访问http://localhost:8080,就相当于访问远程服务器的Web服务。

2.为什么要进行端口映射呢?

在开发过程中,进行端口映射(或端口转发)有几个主要原因:

  1. 访问受保护的服务:开发机上的某些服务可能仅监听在本地主机(127.0.0.1)上,无法直接从外部访问。通过端口映射,可以将这些服务暴露出来,使其可以从外部访问。

  2. 安全性:通过SSH隧道进行端口转发,可以在不直接暴露服务的情况下,安全地访问内部服务。SSH隧道会加密数据传输,增加了安全性。

  3. 方便调试:在开发过程中,开发者可能需要访问运行在开发机上的多个服务。通过端口映射,可以直接从本地访问这些服务,而无需在每次访问时都登录到开发机上。

  4. 绕过防火墙或网络限制:在某些网络环境中,可能存在防火墙或网络限制,阻止直接访问开发机上的服务。通过SSH隧道,可以绕过这些限制,实现对服务的访问。

  5. 多用户访问:如果多个开发者需要访问同一个服务,通过端口映射可以让每个开发者在自己的本地环境中访问该服务,而无需直接登录到开发机。

举个例子:

假设你在开发机上运行了一个Jupyter Notebook服务器,它监听的端口是7860,但只允许本地访问。通过以下SSH命令,可以将开发机的7860端口映射到你本地的7860端口:

ssh -p 37367 root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no

这样,你可以在本地浏览器中访问 http://127.0.0.1:7860 来查看和使用开发机上的Jupyter Notebook服务器。

3.原理

3.1【大白话】原理解释

开发机有自己的暴露端口公网IP,可以用于我们在本地进行ssh连接

但是在开发机也就是服务器中运行程序时,其程序是在服务器的某个端口上运行的

所以我们在本地想要看到该程序在服务器上的运行效果,就要建立端口映射,在浏览器打开本地端口时,转发到服务器的端口进行查看

3.2 原理图

在这里插入图片描述

4.代码

ssh -p 37367 root@ssh.intern-ai.org.cn -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no

例如:

ssh -p 37367 root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no

这条命令用于创建一个SSH隧道。下面是每个部分的详细解释:

  • ssh: 用于启动SSH连接的命令。
  • -p 37367: 指定要连接的远程主机的端口号(在这个例子中是37367端口)。
  • root@ssh.intern-ai.org.cn: 用户名(root)和主机名(ssh.intern-ai.org.cn)。
  • -CNg: 选项的组合:
    • -C: 启用压缩。
    • -N: 告诉SSH不执行远程命令,只进行端口转发。
    • -g: 允许远程主机连接到转发的端口。
  • -L 7860:127.0.0.1:7860: 进行本地端口转发,将本地机器的7860端口映射到远程主机的127.0.0.1的7860端口。
  • -o StrictHostKeyChecking=no: 禁用主机密钥检查,这样可以防止首次连接时出现交互提示。

总结来说,这条命令会在本地机器和远程主机之间创建一个SSH隧道,将本地的7860端口转发到远程主机的7860端口,并且不会执行远程命令或检查主机密钥。

如下图所示:
在进行端口映射之后,显示的是在服务器的7860端口上运行的程序
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker基础知识以及windows上的docker desktop 安装

记录以供备忘 基础概念: 什么是docker 将程序和环境一起打包,以在不同操作系统上运行的工具软件 什么是基础镜像 选一个基础操作系统和语言后,将对应的文件系统、依赖库、配置等打包为一个类似压缩包的文件,就是基础镜像 什么是…

科学防治激素脸 荟敏堂中医治则有绝招

仟江水商业电讯(7月12日 北京 委托发布)最近几年,“激素脸”一词出现在我们生活中的频率似乎越来越高。很多人都曾经或者正在饱受其苦:皮肤瘙痒、紧绷、刺痛,甚至出现红斑、红血丝、表皮萎缩、粗糙、脱屑等等&#xff…

AI在软件开发中的角色:辅助创新还是自动化取代?

文章目录 每日一句正能量前言:人工智能与软件开发的未来交汇点AI工具现状AI对开发者的影响工作方式的改变需要掌握的新技能保持竞争力的策略结论 AI开发的未来AI在软件开发领域的未来发展方向AI是否可能完全取代开发者如何在AI时代规划开发者的职业发展结论 后记&am…

备考美国数学竞赛AMC8和AMC10:吃透1850道真题和知识点

距离接下来的AMC8、AMC10美国数学竞赛还有几个月的时间,实践证明,做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。 通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,…

【项目实战】深入解析HTTP状态码:400 Bad Request

在互联网的日常使用中,HTTP状态码是服务器用来回应客户端请求的一种标准化方式。当你在浏览器地址栏敲入一个网址或在应用中发起一个请求时,背后就是HTTP协议在起作用。今天,我们将聚焦于一个特别常见但经常被误解的状态码——400 Bad Reques…

Golang | Leetcode Golang题解之第230题二叉搜索树中第K小的元素

题目: 题解: type MyBst struct {root *TreeNodenodeNum map[*TreeNode]int // 统计以每个结点为根结点的子树的结点数,并存储在哈希表中 }// 统计以 node 为根结点的子树的结点数 func (t *MyBst) countNodeNum(node *TreeNode) int {if…

大数据时代的数据库管理:分库与读写分离的重要性

前言 “分库”和“数据库拆分”这两个术语在数据库领域经常被提及,通常指的是类似的概念,但在细节上有所区别。分库通常指的是将一个大型数据库中的数据分布到多个较小的数据库中,以提高性能和可管理性。而数据库拆分则更广泛地指将数据库…

解决GET请求中文乱码问题

解决GET请求中文乱码问题 1、乱码的根本原因2、解决方法方法一:修改Tomcat配置(推荐)方法二:使用URLEncoder和URLDecoder(不推荐用于GET请求乱码)方法三:String类编解码(不直接解决乱…

深入理解C++多态性:虚函数、纯虚函数与抽象类的奥秘

深入理解C多态性:虚函数、纯虚函数与抽象类的奥秘 在C这门强大而灵活的编程语言中,多态性(Polymorphism)是一个核心概念,它允许我们通过统一的接口(通常是基类指针或引用)来访问不同对象&#…

DBA 数据库管理 部署Mysql 服务,基础查询

数据库:存储数据的仓库 数据库服务软件: 关系型数据库: 存在硬盘 ,制作表格的 数据库的参数 [rootmysql50 ~]# cat /etc/my.cnf.d/mysql-server.cnf 主配置文件 [mysqld] datadir/var/lib/mysql 存放数据库目录…

C#高级开发 线上面试题20240711

1.事件与委托什么关系,委托与lamda表达式是什么关系? 委托(Delegate) 是一种类型,它定义了方法的类型,使得可以将方法作为参数进行传递。委托是引用类型,它封装了一个或多个方法。委托的实例可以像调用方法一样被调用,而实际上它调用的是它所封装的方法。 事件(Event…

我们水冷电阻器支持高脉冲负载和高抗振能

我们电阻器是液冷电阻器,与风冷型电阻器相比,尺寸非常小。它们支持高脉冲负载和高抗振能力。 水冷电阻器具有完全绝缘的铝制外壳,带有液体冷却通道。主要的电阻元件是由厚膜浆料制成,具有低热漂移和出色的电阻精度。电阻元件嵌入氧…

如何实现接口的幂等性

1,什么是幂等性 即相同的多次请求,只执行一次。 2,简述怎么保证幂等性? 单机部署的场景 使用唯一标识符: 在客户端发起请求时,附加一个唯一的请求标识符(如 UUID)。服务端接收到请求后&#…

Ubuntu20.04.6新系统没有wifi驱动(已解决)

Ubuntu20.04.6新系统没有wifi驱动(已解决) 问题描述硬件环境无线网卡驱动安装网络查看驱动安装 其他因素参考文献 问题描述 在装完ubuntu20.04.6之后发现网络设置里没有无线网。缺少无线网卡驱动。 硬件环境 电脑:i9-13900H 无线网卡&…

南京邮电大学运筹学课程实验报告1 图与网络求解 指导

一、题目描述 实验四 图与网络问题求解    实验属性: 设计型    实验目的 1.理解图的基本概念; 2.掌握运筹学软件的使用方法; 3. 掌握图中Dijkstra算法Matlab求解原理和方法。 …

Java性能优化-HashMap遍历的7种方式及性能测试对比

场景 Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化: Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化_java热点函数-CSDN博客 参考以上性能测试工具的使用。下面针对Java中对HashMap的7种遍历方…

《梦醒蝶飞:释放Excel函数与公式的力量》11.3 ISTEXT函数

第11章:信息函数 第三节 11.3 ISTEXT函数 11.3.1 简介 ISTEXT函数是Excel中的一个信息函数,用于检查指定单元格中的内容是否为文本。如果单元格内容是文本,则返回TRUE;否则返回FALSE。ISTEXT函数在数据验证、条件格式化和逻辑判…

社区团购小程序源码系统 带完整的安装代码以及搭建部署教程

系统概述 在这个数字化时代,线上活动成为了连接用户与组织者的桥梁。为了满足不同场景的需要,开发一个灵活、可定制的在线活动报名表单小程序显得尤为重要。本文将深入介绍一个自定义在线活动报名表单小程序的源码系统,并提供详细的搭建部署…

QT的OpenGL渲染窗QOpenGLWidget Class

Qt - QOpenGLWidget (class) (runebook.dev) 一、说明 QOpenGLWidget 类是用于渲染 OpenGL 图形的小部件。从Qt 5.4就开始退出,它对于OpenGL有专门的配合设计。 二、QOpenGLWidget类的成员 2.1 Public类函数 QOpenGLWidget(QWidget *parent nullptr,Qt…

Android高级——Logger日志系统

Logger日志系统 Logger日志系统是基于内核中的Logger日志驱动程序实现将日志记录保存在内核空间中使用一个环形缓冲区来保存日志,满了之后,新的日志就会覆盖旧的日志 日志类型 main,记录应用程序级别system,记录系统级别radio&…