【服务器】端口映射

打印 上一主题 下一主题

主题 554|帖子 554|积分 1662



  

1.端口映射的概念

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


  • 本地端口映射(Local Port Forwarding)

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

  • 远程端口映射(Remote Port Forwarding)

    • 将远程服务器的某个端口映射到本地盘算机的某个端口。
    • 示例:将远程服务器的2222端口映射到本地盘算机的22端口,从而可以通过远程服务器访问本地盘算机的SSH服务。

  • 动态端口映射(Dynamic Port Forwarding)

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

1.2 端口映射的应用场景


  • 远程访问内部服务:通过端口映射,可以从外部网络访问公司内部或家庭网络中的特定服务,例如Web服务器、数据库服务器等。
  • 穿透防火墙:通过端口映射,可以绕过防火墙的限制,访问被防火墙制止的服务。
  • 提高安全性:通过SSH隧道举行端口映射,可以加密数据传输,提高安全性。
  • 负载均衡和署理:负载均衡器和署理服务器经常利用端口映射技术来分发和转发流量,提高服务的可靠性和性能。
1.3 示例

假设有一个运行在远程服务器上的Web服务,它监听的端口是80。为了从本地盘算机访问这个服务,可以利用以下SSH命令创建一个本地端口映射:
  1. ssh -L 8080:localhost:80 user@remote-server
复制代码
这条命令将本地盘算机的8080端口映射到远程服务器的80端口。如今,在本地浏览器中访问http://localhost:8080,就相当于访问远程服务器的Web服务。
2.为什么要举行端口映射呢?

在开发过程中,举行端口映射(或端口转发)有几个主要缘故原由:

  • 访问受掩护的服务:开发机上的某些服务可能仅监听在本田主机(127.0.0.1)上,无法直接从外部访问。通过端口映射,可以将这些服务暴露出来,使其可以从外部访问。
  • 安全性:通过SSH隧道举行端口转发,可以在不直接暴露服务的情况下,安全地访问内部服务。SSH隧道会加密数据传输,增加了安全性。
  • 方便调试:在开发过程中,开发者可能必要访问运行在开发机上的多个服务。通过端口映射,可以直接从本地访问这些服务,而无需在每次访问时都登录到开发机上。
  • 绕过防火墙或网络限制:在某些网络情况中,可能存在防火墙或网络限制,制止直接访问开发机上的服务。通过SSH隧道,可以绕过这些限制,实现对服务的访问。
  • 多用户访问:如果多个开发者必要访问同一个服务,通过端口映射可以让每个开发者在自己的本地情况中访问该服务,而无需直接登录到开发机。
举个例子:
假设你在开发机上运行了一个Jupyter Notebook服务器,它监听的端口是7860,但只允许本地访问。通过以下SSH命令,可以将开发机的7860端口映射到你本地的7860端口:
  1. 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.代码

  1. ssh -p 37367 root@ssh.intern-ai.org.cn -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
复制代码
例如:
  1. 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端口上运行的步伐


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表