在当今的服务器管理实践中,许多部署在家庭网络、办公室局域网或云厂商私有网络中的服务器,由于没有独立的公网 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),就是为了解决这个问题而生。它们的工作原理通常是:
- 服务端(Server):部署在一台拥有公网 IP 地址的服务器上(通常是云服务器,如阿里云、腾讯云、AWS 等)。它监听一个或多个端口,等待来自内网客户端的连接。
- 客户端(Client):部署在需要被穿透的内网服务器上。它主动连接到公网服务器上的穿透服务端,建立一条稳定的隧道。
- 流量转发:当外部用户(例如使用 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 连接内网穿透后的服务器之前,您需要做好以下准备:
- 一台拥有公网 IP 的服务器(VPS):这台服务器将作为内网穿透的“跳板”,在其上部署 frp 或 NPS 服务端。确保这台服务器的网络连接稳定,并且可以从外部访问。
- 一台内网服务器:这是您最终希望通过 FinalShell 访问的目标机器,它运行在局域网内,拥有 SSH 服务。
- FinalShell 客户端:确保您已经在您的电脑上安装了 FinalShell。如果您还没有安装,可以参考本站的 FinalShell Windows 安装教程。
- frp 或 NPS 服务端与客户端:您需要在公网服务器上安装并配置 frpS/NPS 服务端,在内网服务器上安装并配置 frpC/NPS 客户端,并确保它们已经成功运行并建立了穿透隧道。本文不会深入讲解 frp/NPS 的具体部署步骤,但会假设您已经完成了这一步,并获得了穿透后的公网 IP 和端口信息。
- 防火墙与安全组配置:
- 公网服务器:请确保公网服务器的防火墙(例如
firewalld或ufw)和云服务商的安全组(例如阿里云安全组、腾讯云安全组)已经开放了 frp/NPS 服务端监听的端口(例如 frp 的bind_port和dashboard_port),以及您为 SSH 服务设置的公网穿透端口(例如 frpremote_port或 NPS 配置的对外端口)。 - 内网服务器:确保内网服务器的防火墙允许从本地回环地址(127.0.0.1)或 frp/NPS 客户端访问其 SSH 服务端口(通常是 22)。
- 公网服务器:请确保公网服务器的防火墙(例如
图示:FinalShell 终端界面展示命令行工具与服务器状态,便于管理员快速查看内网穿透进程运行情况。
使用 FinalShell 连接内网穿透后的服务器
在确认 frp 或 NPS 穿透服务已正确配置并运行后,我们就可以在 FinalShell 中添加连接了。
步骤一:获取连接信息
在 FinalShell 中创建连接前,您需要准备好以下关键信息:
- 公网 IP 地址:这是您的 frp/NPS 服务端所在的公网服务器的 IP 地址。
- 穿透后的 SSH 端口:
- 如果您使用的是 frp,这就是您在
frpc.ini配置中[ssh]部分指定的remote_port。 - 如果您使用的是 NPS,这就是您在 NPS Web 界面中为 SSH 服务添加代理规则时设置的公网端口。
- 如果您使用的是 frp,这就是您在
- 内网服务器的用户名和认证信息:用于登录内网服务器的 SSH 用户名(通常是
root或ubuntu、centos等系统用户),以及对应的密码或 SSH 密钥。如果您需要使用 SSH 密钥登录,可以参考本站的 FinalShell SSH 密钥登录教程。
步骤二:在 FinalShell 中新建连接
- 打开 FinalShell 客户端。
- 在左侧的服务器列表区域,点击左上角的“连接”图标(通常是一个插头形状的图标),然后选择“新建连接 (SSH)”。
- 在弹出的“新建 SSH 连接”窗口中,按照以下说明填写信息:
- 名称:给这个连接起一个易于识别的名称,例如“我的内网树莓派 (frp)”、“办公室服务器 (NPS)”等。
- 主机:填写您在步骤一中获取到的公网 IP 地址。
- 端口:填写您在步骤一中获取到的穿透后的 SSH 端口。
- 认证方式:根据您的内网服务器配置,选择“密码”或“密钥”。
- 如果选择“密码”,请在下方填写“用户名”和“密码”。
- 如果选择“密钥”,请在下方填写“用户名”,并选择您的私钥文件路径。
- 描述:可选,可以填写一些备注信息,方便日后管理。
步骤三:保存并连接
- 填写完所有信息后,点击“确定”按钮保存连接配置。
- 在 FinalShell 的左侧服务器列表中,找到您刚刚创建的连接。
- 双击该连接或选中后点击“连接”按钮,FinalShell 将尝试连接您的服务器。
- 首次连接时,可能会弹出“SSH 主机密钥确认”对话框,提示您确认服务器指纹。这是正常的安全提示,确认无误后点击“是”或“接受并保存”即可。
如果一切顺利,您将成功连接到内网穿透后的服务器,并在 FinalShell 的终端界面中看到内网服务器的命令行提示符。恭喜您,现在您可以像访问公网服务器一样管理您的内网设备了!您还可以利用 FinalShell 强大的 SFTP 功能进行文件传输,具体操作可参考 FinalShell SFTP 文件上传。
图示:FinalShell 连接设置窗口,展示了如何填写主机IP、端口和认证信息,以连接内网穿透服务器。
常见问题与排查
在使用 FinalShell 连接内网穿透服务器的过程中,可能会遇到一些问题。以下是一些常见的故障及排查方法:
1. 无法连接或连接超时
这是最常见的问题。请按以下顺序排查:
- 检查公网服务器的防火墙/安全组:确认公网服务器是否已开放了 frp/NPS 服务端监听端口和您设定的公网穿透端口。例如,如果
frpc.ini中remote_port为 6000,则公网服务器的防火墙和安全组必须放行 6000 端口的 TCP 流量。 - 检查 frp/NPS 服务端是否正常运行:登录公网服务器,检查 frpS 或 NPS 服务是否正在运行。可以通过
systemctl status frps(frp) 或systemctl status nps(nps) 查看状态,或检查进程是否存在。 - 检查 frp/NPS 客户端是否正常运行并连接成功:登录内网服务器,检查 frpC 或 NPS 客户端是否正在运行,并确认它已成功连接到公网服务器的 frpS/NPS 服务端。查看客户端日志通常能发现问题。
- 检查穿透配置是否正确:
- frp:检查
frpc.ini中的server_addr(公网 IP),server_port(frpS通信端口),local_ip(内网SSH地址, 通常 127.0.0.1),local_port(内网SSH端口, 通常 22),remote_port(对外暴露的公网端口) 是否都配置正确。 - NPS:通过 NPS Web 管理界面,确认客户端已在线,并且您为 SSH 服务配置的穿透规则是正确的,公网端口与内网服务器的 SSH 端口映射关系无误。
- frp:检查
- 检查 FinalShell 连接配置:核对 FinalShell 中填写的“主机” (公网 IP) 和“端口” (穿透后的公网端口) 是否与您的穿透配置完全一致。
- 网络连通性:在 FinalShell 所在电脑上尝试
ping 公网IP,确保网络可达。 - FinalShell 自身问题:如果FinalShell 连接超时,可以参考 FinalShell 连接超时解决 这篇文章获取更多排查思路。
2. 连接成功但无法执行命令或传输文件
- SSH 服务是否正常:在内网服务器本地尝试 SSH 连接
localhost或127.0.0.1,检查 SSH 服务 (sshd) 是否正常运行。 - 用户名和密码/密钥:确认在 FinalShell 中填写的用户名和密码或选择的 SSH 密钥是正确的。错误的凭据会导致认证失败。
- 权限问题:某些操作可能需要
sudo权限,或者您登录的用户没有足够的权限访问特定文件或目录。
3. 穿透服务不稳定
- 进程守护:确保 frpS/frpC 或 NPS 服务端/客户端使用了
systemd、supervisor或nohup等方式进行进程守护,防止意外退出。 - 日志检查:定期检查 frp/NPS 的日志,查看是否有异常错误信息,如网络断开、配置错误等。
- 网络带宽:如果穿透隧道经常断开或速度很慢,可能是公网服务器或内网网络带宽不足导致。
总结
通过 frp 或 NPS 等内网穿透技术,结合 FinalShell 这样强大的 SSH 客户端,您能够轻松地从外部网络访问和管理您的内网服务器。这不仅极大地提升了工作效率,也为远程办公和个人项目管理带来了极大的便利。
从 FinalShell 官方下载 获取最新版本,按照本文的指引,您将能够熟练地驾驭内网穿透带来的强大能力。希望这篇教程能帮助您解决连接内网服务器的难题,开启更加便捷的服务器管理之旅!
延伸阅读
若需进一步查阅,可先看本站以下教程: