在当今的服务器管理实践中,许多部署在家庭网络、办公室局域网或云厂商私有网络中的服务器,由于没有独立的公网 IP 地址,无法直接从外部网络访问。这种情况下,内网穿透(NAT Traversal)技术便成为了我们的救星。它允许我们通过一台具有公网 IP 的服务器作为“跳板”,将内网服务暴露给外部世界。而 FinalShell 作为一款功能强大的 SSH 客户端,能够无缝地连接这些经过内网穿透的服务器,提供便捷的管理体验。

本文将详细介绍如何利用 FinalShell 连接通过 frp 或 NPS 配置的内网穿透服务器,帮助您轻松打破网络限制,随时随地管理您的内网资源。

为什么需要内网穿透?

想象一下,您的树莓派、旧电脑改造的家用服务器,或者公司内部的开发测试服务器,它们都运行在局域网(LAN)内。这些设备通常只分配到一个私有 IP 地址(例如 192.168.1.x 或 10.0.0.x),路由器会使用网络地址转换(NAT)技术将局域网内的私有 IP 映射到路由器的公网 IP。这意味着,从互联网上直接尝试连接这些私有 IP 是不可能的。

内网穿透技术,比如 frp(Fast Reverse Proxy)和 NPS(Network Proxy Server),就是为了解决这个问题而生。它们的工作原理通常是:

  1. 服务端(Server):部署在一台拥有公网 IP 地址的服务器上(通常是云服务器,如阿里云、腾讯云、AWS 等)。它监听一个或多个端口,等待来自内网客户端的连接。
  2. 客户端(Client):部署在需要被穿透的内网服务器上。它主动连接到公网服务器上的穿透服务端,建立一条稳定的隧道。
  3. 流量转发:当外部用户(例如使用 FinalShell 的您)尝试连接公网服务器上的特定端口时,穿透服务端会将这些流量通过已建立的隧道转发到内网客户端,再由客户端转发到内网服务器的实际服务端口(例如 SSH 服务的 22 端口)。

通过这种方式,您就可以像连接一台拥有公网 IP 的服务器一样,通过公网服务器的 IP 和映射端口来访问您的内网服务器。

内网穿透方案简介:frp 与 NPS

frp 和 NPS 是目前非常流行的两款开源内网穿透工具,它们各有特点,但都能够实现将内网服务安全地暴露到公网的功能。

frp (Fast Reverse Proxy)

frp 是一款高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。它的特点是轻量级、配置灵活,被广泛用于将内网的 SSH、Web、数据库等服务通过公网服务器代理出去。frp 采用 C/S(客户端/服务端)架构,配置主要通过 frps.ini(服务端)和 frpc.ini(客户端)文件进行。

例如,您可以在 frpc.ini 中配置一个 SSH 服务穿透:

[common]
server_addr = your_public_ip
server_port = 7000 ; frp服务端的通信端口

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22 ; 内网服务器的SSH端口
remote_port = 6000 ; 外部通过公网IP:6000访问

这样,您就可以通过 your_public_ip:6000 来 SSH 连接到内网服务器的 22 端口。

NPS (Network Proxy Server)

NPS 是另一款功能丰富的轻量级、高性能、功能强大的内网穿透代理服务器。相比 frp,NPS 通常提供了一个 Web 管理界面,这使得配置和管理穿透规则变得更加直观和便捷。NPS 也支持 TCP、UDP、HTTP、HTTPS、SOCKS5 等多种代理模式,并且提供了流量统计、权限管理等高级功能。

使用 NPS 时,您通常会在公网服务器上安装并启动 NPS 服务端,然后通过浏览器访问其 Web 管理界面。在界面中,您可以添加客户端、生成客户端配置命令,并在客户端连接上来后,添加各种穿透代理规则,指定公网端口与内网目标服务的映射关系。

前提条件与准备工作

在开始使用 FinalShell 连接内网穿透后的服务器之前,您需要做好以下准备:

  1. 一台拥有公网 IP 的服务器(VPS):这台服务器将作为内网穿透的“跳板”,在其上部署 frp 或 NPS 服务端。确保这台服务器的网络连接稳定,并且可以从外部访问。
  2. 一台内网服务器:这是您最终希望通过 FinalShell 访问的目标机器,它运行在局域网内,拥有 SSH 服务。
  3. FinalShell 客户端:确保您已经在您的电脑上安装了 FinalShell。如果您还没有安装,可以参考本站的 FinalShell Windows 安装教程
  4. frp 或 NPS 服务端与客户端:您需要在公网服务器上安装并配置 frpS/NPS 服务端,在内网服务器上安装并配置 frpC/NPS 客户端,并确保它们已经成功运行并建立了穿透隧道。本文不会深入讲解 frp/NPS 的具体部署步骤,但会假设您已经完成了这一步,并获得了穿透后的公网 IP 和端口信息。
  5. 防火墙与安全组配置
    • 公网服务器:请确保公网服务器的防火墙(例如 firewalldufw)和云服务商的安全组(例如阿里云安全组、腾讯云安全组)已经开放了 frp/NPS 服务端监听的端口(例如 frp 的 bind_portdashboard_port),以及您为 SSH 服务设置的公网穿透端口(例如 frp remote_port 或 NPS 配置的对外端口)。
    • 内网服务器:确保内网服务器的防火墙允许从本地回环地址(127.0.0.1)或 frp/NPS 客户端访问其 SSH 服务端口(通常是 22)。

FinalShell terminal output showing command line tools and server status 图示:FinalShell 终端界面展示命令行工具与服务器状态,便于管理员快速查看内网穿透进程运行情况。

使用 FinalShell 连接内网穿透后的服务器

在确认 frp 或 NPS 穿透服务已正确配置并运行后,我们就可以在 FinalShell 中添加连接了。

步骤一:获取连接信息

在 FinalShell 中创建连接前,您需要准备好以下关键信息:

  1. 公网 IP 地址:这是您的 frp/NPS 服务端所在的公网服务器的 IP 地址。
  2. 穿透后的 SSH 端口
    • 如果您使用的是 frp,这就是您在 frpc.ini 配置中 [ssh] 部分指定的 remote_port
    • 如果您使用的是 NPS,这就是您在 NPS Web 界面中为 SSH 服务添加代理规则时设置的公网端口
  3. 内网服务器的用户名和认证信息:用于登录内网服务器的 SSH 用户名(通常是 rootubuntucentos 等系统用户),以及对应的密码或 SSH 密钥。如果您需要使用 SSH 密钥登录,可以参考本站的 FinalShell SSH 密钥登录教程

步骤二:在 FinalShell 中新建连接

  1. 打开 FinalShell 客户端。
  2. 在左侧的服务器列表区域,点击左上角的“连接”图标(通常是一个插头形状的图标),然后选择“新建连接 (SSH)”。
  3. 在弹出的“新建 SSH 连接”窗口中,按照以下说明填写信息:
    • 名称:给这个连接起一个易于识别的名称,例如“我的内网树莓派 (frp)”、“办公室服务器 (NPS)”等。
    • 主机:填写您在步骤一中获取到的公网 IP 地址
    • 端口:填写您在步骤一中获取到的穿透后的 SSH 端口
    • 认证方式:根据您的内网服务器配置,选择“密码”或“密钥”。
      • 如果选择“密码”,请在下方填写“用户名”和“密码”。
      • 如果选择“密钥”,请在下方填写“用户名”,并选择您的私钥文件路径。
    • 描述:可选,可以填写一些备注信息,方便日后管理。

步骤三:保存并连接

  1. 填写完所有信息后,点击“确定”按钮保存连接配置。
  2. 在 FinalShell 的左侧服务器列表中,找到您刚刚创建的连接。
  3. 双击该连接或选中后点击“连接”按钮,FinalShell 将尝试连接您的服务器。
  4. 首次连接时,可能会弹出“SSH 主机密钥确认”对话框,提示您确认服务器指纹。这是正常的安全提示,确认无误后点击“是”或“接受并保存”即可。

如果一切顺利,您将成功连接到内网穿透后的服务器,并在 FinalShell 的终端界面中看到内网服务器的命令行提示符。恭喜您,现在您可以像访问公网服务器一样管理您的内网设备了!您还可以利用 FinalShell 强大的 SFTP 功能进行文件传输,具体操作可参考 FinalShell SFTP 文件上传

FinalShell connection settings window with server details filled in 图示:FinalShell 连接设置窗口,展示了如何填写主机IP、端口和认证信息,以连接内网穿透服务器。

常见问题与排查

在使用 FinalShell 连接内网穿透服务器的过程中,可能会遇到一些问题。以下是一些常见的故障及排查方法:

1. 无法连接或连接超时

这是最常见的问题。请按以下顺序排查:

2. 连接成功但无法执行命令或传输文件

3. 穿透服务不稳定

总结

通过 frp 或 NPS 等内网穿透技术,结合 FinalShell 这样强大的 SSH 客户端,您能够轻松地从外部网络访问和管理您的内网服务器。这不仅极大地提升了工作效率,也为远程办公和个人项目管理带来了极大的便利。

FinalShell 官方下载 获取最新版本,按照本文的指引,您将能够熟练地驾驭内网穿透带来的强大能力。希望这篇教程能帮助您解决连接内网服务器的难题,开启更加便捷的服务器管理之旅!

延伸阅读

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