Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在 Fedora 上使用 SSH 端口转发

在 Fedora 上使用 SSH 端口转发

作者头像
星哥玩云
发布于 2022-08-08 07:31:38
发布于 2022-08-08 07:31:38
8970
举报
文章被收录于专栏:开源部署开源部署

你可能已经熟悉使用 ssh 命令访问远程系统。ssh 命令背后所使用的协议允许终端的输入和输出流经安全通道。但是你知道也可以使用 ssh 来安全地发送和接收其他数据吗?一种方法是使用“端口转发port forwarding”,它允许你在进行 ssh 会话时安全地连接网络端口。本文向你展示了它是如何工作的。

关于端口

标准 Linux 系统已分配了一组网络端口,范围是 0 - 65535。系统会保留 0 - 1023 的端口以供系统使用。在许多系统中,你不能选择使用这些低端口号。通常有几个端口用于运行特定的服务。你可以在系统的 /etc/services 文件中找到这些定义。

你可以认为网络端口是类似的物理端口或可以连接到电缆的插孔。端口可以连接到系统上的某种服务,类似物理插孔后面的接线。一个例子是 Apache Web 服务器(也称为 httpd)。对于 HTTP 非安全连接,Web 服务器通常要求在主机系统上使用端口 80,对于 HTTPS 安全连接通常要求使用 443。

当你连接到远程系统(例如,使用 Web 浏览器)时,你是将浏览器“连接”到你的主机上的端口。这通常是一个随机的高端口号,例如 54001。你的主机上的端口连接到远程主机上的端口(例如 443)来访问其安全的 Web 服务器

那么,当你有这么多可用端口时,为什么还要使用端口转发呢?这是 Web 开发人员生活中的几种常见情况。

本地端口转发

想象一下,你正在名为 remote.example.com 的远程系统上进行 Web 开发。通常,你是通过 ssh 进入此系统的,但是它位于防火墙后面,而且该防火墙很少允许其他类型的访问,并且会阻塞大多数其他端口。要尝试你的网络应用,能够使用浏览器访问远程系统会很有帮助。但是,由于使用了讨厌的防火墙,你无法通过在浏览器中输入 URL 的常规方法来访问它。

本地转发使你可以通过 ssh 连接来建立可通过远程系统访问的端口。该端口在系统上显示为本地端口(因而称为“本地转发”)。

假设你的网络应用在 remote.example.com 的 8000 端口上运行。要将那个系统的 8000 端口本地转发到你系统上的 8000 端口,请在开始会话时将 -L 选项与 ssh 结合使用:

  1. $ ssh-L 8000:localhost:8000 remote.example.com

等等,为什么我们使用 localhost 作为转发目标?这是因为从 remote.example.com 的角度来看,你是在要求主机使用其自己的端口 8000。(回想一下,任何主机通常可以通过网络连接 localhost 而连接到自身。)现在那个端口连接到你系统的 8000 端口了。ssh 会话准备就绪后,将其保持打开状态,然后可以在浏览器中键入 http://localhost:8000 来查看你的 Web 应用。现在,系统之间的流量可以通过 ssh 隧道安全地传输!

如果你有敏锐的眼睛,你可能已经注意到了一些东西。如果我们要 remote.example.com 转发到与 localhost 不同的主机名怎么办?如果它可以访问该网络上另一个系统上的端口,那么通常可以同样轻松地转发该端口。例如,假设你想访问也在该远程网络中的 db.example.comMariaDBMySQL 服务。该服务通常在端口 3306 上运行。因此,即使你无法 ssh 到实际的 db.example.com 主机,你也可以使用此命令将其转发:

  1. $ ssh-L 3306:db.example.com:3306 remote.example.com

现在,你可以在 localhost 上运行 MariaDB 命令,而实际上是在使用 db.example.com 主机。

远程端口转发

远程转发让你可以进行相反操作。想象一下,你正在为办公室的朋友设计一个 Web 应用,并想向他们展示你的工作。不过,不幸的是,你在咖啡店里工作,并且由于网络设置,他们无法通过网络连接访问你的笔记本电脑。但是,你同时使用着办公室的 remote.example.com 系统,并且仍然可在这里登录。你的 Web 应用似乎在本地 5000 端口上运行良好。

远程端口转发使你可以通过 ssh 连接从本地系统建立端口的隧道,并使该端口在远程系统上可用。在开始 ssh 会话时,只需使用 -R 选项:

  1. $ ssh-R 6000:localhost:5000 remote.example.com

现在,当在公司防火墙内的朋友打开浏览器时,他们可以进入 http://remote.example.com:6000 查看你的工作。就像在本地端口转发示例中一样,通信通过 ssh 会话安全地进行。

默认情况下,sshd 守护进程运行在设置的主机上,因此只有该主机可以连接它的远程转发端口。假设你的朋友希望能够让其他 example.com 公司主机上的人看到你的工作,而他们不在 remote.example.com 上。你需要让 remote.example.com 主机的所有者将以下选项之一添加到 /etc/ssh/sshd_config 中:

  1. GatewayPortsyes#或
  2. GatewayPorts clientspecified

第一个选项意味着 remote.example.com 上的所有网络接口都可以使用远程转发的端口。第二个意味着建立隧道的客户端可以选择地址。默认情况下,此选项设置为 no

使用此选项,你作为 ssh 客户端仍必须指定可以共享你这边转发端口的接口。通过在本地端口之前添加网络地址范围来进行此操作。有几种方法可以做到,包括:

  1. $ ssh-R *:6000:localhost:5000#所有网络
  2. $ ssh-R 0.0.0.0:6000:localhost:5000#所有网络
  3. $ ssh-R 192.168.1.15:6000:localhost:5000#单个网络
  4. $ ssh-R remote.example.com:6000:localhost:5000#单个网络
其他注意事项

请注意,本地和远程系统上的端口号不必相同。实际上,有时你甚至可能无法使用相同的端口。例如,普通用户可能不会在默认设置中转发到系统端口。

另外,可以限制主机上的转发。如果你需要在联网主机上更严格的安全性,那么这你来说可能很重要。 sshd 守护程进程的 PermitOpen 选项控制是否以及哪些端口可用于 TCP 转发。默认设置为 any,这让上面的所有示例都能正常工作。要禁止任何端口转发,请选择 none,或仅允许的特定的“主机:端口”。有关更多信息,请在手册页中搜索 PermitOpen 来配置 sshd 守护进程:

  1. $ man sshd_config

最后,请记住,只有在 ssh 会话处于打开状态时才会端口转发。如果需要长时间保持转发活动,请尝试使用 -N 选项在后台运行会话。确保控制台已锁定,以防止在你离开控制台时其被篡夺。

via: https://fedoramagazine.org/using-ssh-port-forwarding-on-fedora/

译者:geekpi 校对:wxy

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何设置 SSH 隧道(端口转发)
SSH隧道或SSH端口转发是一种在客户端和服务器机器之间创建加密SSH连接的方法,通过该连接可以中继服务端口。
星哥玩云
2022/07/28
8.3K0
如何设置 SSH 隧道(端口转发)
用autossh工具进行端口转发
比如我们在host2机器上面部署了很多服务,但是由于某种原因导致我们无法直接ssh访问该服务器已经其上服务的对应端口,但是host3服务器,既能够访问host2服务器,又可以访问我们的 host1 服务器。这时,我们可以通过设置ssh来进行服务的访问。但是还有两个问题:你需要保持终端开启防止SSH进程被关闭;由于网络故障/波动导致SSH终断时无法自动重连。
子润先生
2021/06/17
5.4K0
SSH隧道端口转发功能详解
ssh隧道大致可以分为3种,分别为本地端口转发,远程端口转发,动态端口转发,本文将让你彻底搞懂这3个转发的命令表达形式,让你能够灵活运用解决生活中的各种特殊场景。
Lcry
2022/11/29
2.5K0
SSH隧道端口转发功能详解
SSH 端口转发实例详解
SSH 端口转发功能能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。其实这一技术就是我们常常听说的隧道(tunnel)技术,原因是 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输。
星哥玩云
2022/07/07
1.2K0
SSH 端口转发实例详解
SSH原理常见应用升级及端口转发
命令 -L localport:remotehost:remotehostport sshserver
iginkgo18
2020/09/27
1.9K0
SSH原理常见应用升级及端口转发
SSH的三种端口转发
最近工作中经常需要ssh登录到某台跳板机,再连接受限网络环境中的某台服务器。以前经常用SSH端口转发这一功能,但周围的同事好像对这个并不清楚,这里记录一下以备其它同事询问。
jeremyxu
2019/03/13
2.5K0
玩转SSH端口转发
SSH有三种端口转发模式,本地端口转发(Local Port Forwarding),远程端口转发(Remote Port Forwarding)以及动态端口转发(Dynamic Port Forwarding)。对于本地/远程端口转发,两者的方向恰好相反。动态端口转发则可以用于科学上网。
Fundebug
2018/09/12
4.3K0
玩转SSH端口转发
SSH 隧道:端口转发功能详解!
SSH 隧道是一种安全的数据传输方法,它允许我们在不安全的网络上建立一个安全的连接。SSH 隧道提供两大功能:
民工哥
2024/06/17
1.1K0
SSH 隧道:端口转发功能详解!
SSH加密隧道之端口转发
SSH会自动加密和解密所有SSH客户端与服务端之间的网络数据,还能够将其他TCP端口的网络数据通过SSH连接进行转发,并且自动提供了相应的加密及解密服务,这一过程被叫做“SSH隧道” (tunneling)。
糖果
2020/02/17
3.9K0
SSH加密隧道之端口转发
SSH端口转发
让我们先来了解一下端口转发的概念吧。我们知道,SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是,SSH 还同时提供了一个非常有用的功能,这就是端口转发。它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程有时也被叫做“隧道”(tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,LDAP 这些 TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果您工作环境中的防火墙限制了一些网络端口的使用,但是允许 SSH 的连接,那么也是能够通过将 TCP 端口转发来使用 SSH 进行通讯。总的来说 SSH 端口转发能够提供两大功能:
用户4877748
2020/07/22
3K0
SSH端口转发
SSH端口转发
ssh 会自动加密和解密所有的ssh客户端与服务端之间的网络数据。但是ssh 还提供了一个端口转发的功能。转发是一种与其他网络应用程序交互的方式,它能将其他TCP端口的网络数据通过SSH链接来转发,并且自动提供了相应的加密以及解密服务。这一过程有时也被叫做隧道
smallwormer
2019/05/01
3.8K0
IT知识百科:什么是SSH端口转发?
SSH(Secure Shell)是一种加密的网络协议,用于安全地远程登录和执行命令。除了远程登录外,SSH还具备其他功能,其中一个重要的功能就是端口转发。SSH端口转发是一种将网络流量从一个端口转发到另一个端口的机制,通过SSH通道进行安全传输。在本文中,我们将详细介绍SSH端口转发的概念、类型和用途。
网络技术联盟站
2023/06/25
3.1K0
IT知识百科:什么是SSH端口转发?
挖了一条网络隧道,差点被公司激活
你是否常常遇到这些个麻烦,因为公司安全策略的问题,每次要通过跳板机而不能直接连开发环境,使用上面已经搭建好的数据库服务。为了方便发布,自己电脑上的服务别人,不能让开发环境的机器直接连上测试。还有我们在星巴克喝着咖啡连着免费wifi的时候,会不会网络请求都被黑客抓包下来?
机智的程序员小熊
2019/05/13
3.2K1
挖了一条网络隧道,差点被公司激活
SSH端口转发
今天碰到一个需求,在用户环境中,如果要访问机房里某个机器上,必须通过一个机器中转才可以,如果仅仅是SSH登录一下,我也就忍了,毕竟跳跳更健康嘛。但是今天要访问里面机器上的Web服务,我可以纠结了一会,后来想到了可以使用SSH的端口转发来实现。下面就看看怎么实现吧。
kongxx
2019/03/11
2.4K0
通过SSH端口转发创建加密隧道
Secure Shell(SSH)拥有几个非常酷的技巧,每个技巧都提供了一个方便的功能(包裹在安全的保护层中),可以让你的生活变得更轻松一些。
云云众生s
2024/03/28
3120
ssh端口转发穿越多重跳板机的方法
本篇文章简单介绍一下三种 SSH 端口转发的操作,本篇文章创建的日期为 1.16,真正动手写的日期是 2.16,刚好鸽了一个月,笑死。本来想好好写一下的,现在就稍微写一下吧,知识这个东西,一旦你掌握了,就再也无法忘记了。
棒棒鸡不棒
2022/09/02
5.1K1
ssh端口转发穿越多重跳板机的方法
利用SSH隧道技术穿越内网访问远程设备
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/11903758.html
叶余
2019/11/21
4.2K0
使用 AutoSSH 实现自动化跨网络访问
比如我们在 host2 机器上面部署了很多服务,但是由于某种原因导致我们无法直接 ssh 访问该服务器已经其上服务的对应端口,但是 host3 服务器,既能够访问 host2 服务器,又可以访问我们的 host1 服务器。这是,我们可以通过设置 ssh 来进行服务的访问。但是还有两个问题:你需要保持终端开启防止 SSH 进程被关闭;由于网络故障/波动导致 SSH 终断时无法自动重连。
民工哥
2021/04/21
1.7K0
SecureCRT SSH双重socks动态端口转发
目前遇到SecureCRT SSH直接连接阿里云香港节点的云主机总是隔段时间就连不上的问题
yuanfan2012
2019/05/30
3.3K0
内网渗透常用端口转发与代理工具枚举
lcx.exe是一个端口转发工具,有Windows版和Linux版两个版本,Windows版是lcx.exe,Linux版为portmap,
字节脉搏实验室
2020/04/24
3.2K0
相关推荐
如何设置 SSH 隧道(端口转发)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档