SSH工具

FinalShell 在 macOS 上怎么做端口转发?最新版手把手教你

2026-10-20 · FinalShell

FinalShell 在 macOS 上怎么做端口转发?最新版手把手教你 配图

我在日常开发和测试中,经常需要访问部署在远程服务器上的各种服务,比如数据库、Web 管理界面或者一些内部API。但这些服务往往出于安全考虑,并不会直接暴露在公网上。这时候,FinalShell 的端口转发功能就成了我的得力助手,尤其是在 macOS 上使用 FinalShell 4.6.20 这个版本,操作起来又快又方便。

macOS 上的 FinalShell 界面

什么是端口转发,为啥要用它?

简单来说,端口转发(Port Forwarding)就像是给你的网络请求开辟了一条秘密通道。它能让你通过本地的一个端口,去访问远程服务器上的另一个端口。

举个例子,你本地电脑运行着一个浏览器,想访问远程服务器上一个只监听在 localhost:8080 的 Web 服务。如果直接访问服务器IP:8080肯定是不行的,因为这个服务只在服务器内部可用。通过端口转发,你可以在本地配置一个端口(比如 localhost:9999),当浏览器访问 localhost:9999 时,FinalShell 就会把请求转发到远程服务器的 localhost:8080 服务上。这样,你就像直接在服务器上操作一样,方便快捷。

主要有两种类型:

  • 本地端口转发(Local Port Forwarding):把远程服务器上的服务映射到你的本地电脑上。这是最常用的一种,我们本地访问远程服务就靠它。
  • 远程端口转发(Remote Port Forwarding):把本地电脑上的服务映射到远程服务器上。这种场景相对少见,但如果你想让外部用户通过远程服务器访问你本地的某个服务,就会用到它。

FinalShell 在 macOS 上配置本地端口转发

现在,我们以 FinalShell 4.6.20 在 macOS 上的操作为例,手把手教你如何设置本地端口转发。

1. 新建或编辑会话

首先,打开你的 FinalShell 客户端。在左侧的会话树中,选中你想要进行端口转发的服务器连接。如果你还没有连接,可以新建一个 SSH 连接。右键点击该连接,选择“属性”或者直接双击进入连接详情。

在弹出的会话属性窗口中,你会看到很多选项卡,找到并点击顶部的“隧道”选项卡。这里就是我们配置端口转发规则的地方。

2. 添加本地转发规则

进入“隧道”选项卡后,你会看到左侧有一个“本地端口转发”的列表。

  1. 点击新增按钮:在“本地端口转发”区域的左下角,你会看到一个绿色的加号按钮,点击它。

  2. 填写转发规则:

    • 本地监听地址:一般填 127.0.0.1 或者 0.0.0.0。如果填 127.0.0.1,只有你本机能访问;填 0.0.0.0 则其他与你本机同网络的设备也能通过你的 IP 访问。这里我们填 127.0.0.1。
    • 本地监听端口:这是你本地电脑上用于监听的端口,比如 9999。确保这个端口在你本地没有被其他程序占用。
    • 目标服务器:填写远程服务器上实际提供服务的 IP 地址,通常是 127.0.0.1 (代表服务器自身)。如果你想转发到远程服务器局域网内的其他机器,就填那台机器的内网 IP。
    • 目标端口:这是远程服务器上服务的实际端口,比如 8080。

    举例:你想通过 localhost:9999 访问远程服务器的 127.0.0.1:8080,那就填: 本地监听地址:127.0.0.1 本地监听端口:9999 目标服务器:127.0.0.1 目标端口:8080

  3. 保存并连接:配置完成后,点击右下角的“保存”按钮。然后连接到你的服务器。只要 SSH 会话保持连接,端口转发就会一直生效。

3. 测试转发效果

连接成功后,你可以打开你的浏览器或者使用 curl 命令来测试端口转发是否生效。

在 macOS 的终端里输入:

curl http://localhost:9999

如果一切正常,你应该能看到远程服务器上 8080 端口服务的响应内容。这意味着你的本地应用已经成功通过 FinalShell 隧道连接到了远程服务!

如果你对 SFTP 文件传输感兴趣,可以看看这篇文章:/blog/finalshell-sftp-file-transfer/。

FinalShell 在 macOS 上配置远程端口转发

远程端口转发的配置过程与本地转发类似,只是方向相反。它的主要作用是让远程服务器可以通过某个端口访问你本地的服务。

1. 依然是会话属性里的“隧道”选项卡

在 FinalShell 的会话属性窗口,同样进入“隧道”选项卡。这次我们关注的是“远程端口转发”区域。

2. 添加远程转发规则

  1. 点击新增按钮:在“远程端口转发”区域的左下角,点击绿色的加号按钮。

  2. 填写转发规则:

    • 远程监听地址:通常是 127.0.0.1 或者 0.0.0.0。0.0.0.0 表示远程服务器的所有网络接口都可以监听此端口,即外部用户可以通过远程服务器的公网IP访问你的本地服务。出于安全考虑,建议先填 127.0.0.1。
    • 远程监听端口:远程服务器上用于监听的端口,比如 8888。
    • 目标服务器:填写你本地电脑的 IP 地址,通常是 127.0.0.1。
    • 目标端口:你本地电脑上服务的实际端口,比如你本地运行了一个 Python Web 服务监听在 5000 端口。

    举例:你想让远程服务器通过 localhost:8888 访问你本地的 127.0.0.1:5000,那就填: 远程监听地址:127.0.0.1 远程监听端口:8888 目标服务器:127.0.0.1 目标端口:5000

  3. 保存并连接:保存规则并连接服务器。此时,远程服务器上的程序可以通过访问 localhost:8888 来访问你本地的 5000 端口服务了。如果 远程监听地址 填的是 0.0.0.0,并且远程服务器的防火墙也允许,那么外部用户就可以通过远程服务器的 公网IP:8888 来访问你本地的服务。

配置 FinalShell 连接时,有一些高级设置可能对你有帮助,比如SSH密钥配置:/blog/finalshell-ssh-key-configuration/。

常见问题

在使用 FinalShell 进行端口转发时,你可能会遇到一些小麻烦,这里列举几个常见问题和解决办法。

1. 端口被占用怎么办?

问题描述:在设置本地监听端口时,FinalShell 提示端口被占用,导致无法启动转发。 解决办法:

  • 更换端口:最直接的方法是换一个未被占用的端口。通常三位数以上的端口(如 9000 以上)被占用的概率较低。
  • 查找占用进程:在 macOS 终端中使用 lsof -i :端口号 命令(例如 lsof -i :9999)来查找哪个进程占用了该端口,然后你可以选择关闭该进程或更换端口。

2. 转发连接不上或拒绝连接?

问题描述:设置好转发规则后,访问本地端口却连接不上,或者报错“Connection refused”。 解决办法:

  • 检查 SSH 连接状态:确保 FinalShell 到远程服务器的 SSH 会话是正常连接的。如果 SSH 断开,转发自然失效。
  • 检查目标服务是否运行:确认远程服务器上的目标服务(比如 Web 服务或数据库)确实在监听你设置的目标端口,并且正常运行。可以使用 netstat -tulnp | grep 目标端口 在远程服务器上检查。
  • 检查远程防火墙:远程服务器的防火墙(如 firewalld 或 ufw)可能会阻止 SSH 隧道访问目标端口。你需要确保防火墙允许来自 127.0.0.1(或你设置的目标 IP)的连接到目标端口。通常,如果 SSH 隧道在服务器内部转发,防火墙问题较少,但如果是 目标服务器 填了远程内网IP,则需检查远程服务器到目标内网机器的防火墙。
  • 检查目标服务绑定地址:有些服务可能只绑定在 127.0.0.1,如果你在 FinalShell 配置时将 目标服务器 填成了远程服务器的公网 IP,也会导致问题。请确保与目标服务绑定的地址一致。

3. FinalShell macOS 版安装问题?

问题描述:FinalShell 在 macOS 上安装后打不开,或者提示“无法验证开发者”。 解决办法:

  • 系统偏好设置:在“系统设置” -> “隐私与安全性”中,找到“安全性”部分。如果 FinalShell 是从非 App Store 下载,可能会被 macOS 阻止。点击“仍要打开”或“允许”按钮即可。
  • 命令行授权:如果仍然无法打开,可以尝试在终端中使用 xattr -cr /Applications/FinalShell.app (假设 FinalShell 安装在 Applications 目录)命令来移除隔离属性,然后再次尝试打开。

了解如何在 Windows 上安装 FinalShell 也很重要,可以参考这篇指南:/blog/finalshell-windows-install-guide/。此外,FinalShell 的端口转发还有更多高级用法,比如多级端口转发:/blog/finalshell-port-forwarding-guide/

延伸阅读

若需进一步查阅,可先看本站以下教程: