配置FRP实现ubuntu远程SSH访问
占位符说明:
<FRP服务端地址>
:你的FRP服务端公网IP或域名<内网IP>
:需要被穿透的内网主机IP<用户名>
:登录系统的用户名<认证Token>
:自定义的安全认证字符串,客户端和服务端需一致<自定义域名>
:用于HTTP/HTTPS代理的自定义域名<frp安装目录>
:frp解压后的实际路径,本教程使用/opt/frp_0.63.0_linux_amd64/<端口号>
:本教程使用默认端口号,FRP服务端7000,Web管理界面7500,SSH访问6000
目录
1. FRP 基础介绍
1.1 什么是 FRP?
FRP(Fast Reverse Proxy)是一款开源的反向代理应用,旨在帮助用户将位于内网或防火墙后的服务(如 Web 服务、SSH 等)暴露到公网。它支持多种协议,并提供高效的性能和丰富的功能,适用于个人用户和企业级应用。
1.2 FRP 的工作原理
FRP 采用客户端-服务端架构:
- 服务端(
frps
):部署在拥有公网 IP 的服务器上,负责接收来自客户端的连接请求。 - 客户端(
frpc
):部署在内网环境中,连接到服务端,并将内网服务(如 SSH)通过服务端进行转发。
这种方式避免了内网服务器直接暴露在公网,提高了安全性,同时简化了内网穿透的过程。
1.3 FRP 的优势
- 高性能:采用高效的网络传输协议,支持多种代理类型。
- 易于配置:配置文件简洁明了,适合新手快速上手。
- 灵活性:支持多种场景,如 HTTP/HTTPS、TCP、UDP 等。
- 安全性:支持多种认证方式,确保连接的安全。
2. 环境准备
2.1 系统要求
- 操作系统:Ubuntu(适用于其他 Linux 发行版,步骤类似)
- 账户信息:普通用户(例如
user
),无需 root 权限 - 网络信息:
- 内网 IP:
<内网IP>
(部署frpc
的内网机器) - FRP 服务器地址:
<FRP服务端地址>
(拥有公网 IP 的服务器,用于部署frps
)
- 内网 IP:
- 工具:
wget
,tar
,systemd
(Ubuntu 默认已安装)
2.2 端口规划
在开始配置前,请规划好以下端口:
用途 | 端口号 | 说明 |
---|---|---|
FRP服务端监听端口 | 7000 |
客户端连接服务端的端口 |
FRP Web管理界面 | 7500 |
可选,用于监控FRP状态 |
SSH远程访问端口 | 6000 |
通过FRP访问SSH的端口 |
注意:请确保这些端口在防火墙中已开放,且未被其他服务占用。
3. FRP 服务端配置
3.1 下载并安装 FRP
在拥有公网 IP 的服务器(<FRP服务端地址>
)上执行以下操作:
1 | # 切换到 /opt 目录(需要管理员权限) |
3.2 配置服务端
创建并编辑服务端配置文件:
1 | nano frps.toml |
在编辑器中输入以下内容:
1 | # FRP 服务端配置文件 |
配置说明:
bindPort
:FRP 服务端监听的主要端口auth.token
:认证令牌,确保安全性[webServer]
:Web 管理界面配置(可选)
3.3 启动服务端
方式一:直接启动(测试用)
1 | ./frps -c frps.toml |
方式二:使用 systemd 服务(推荐)
创建 systemd 服务文件:
1 | sudo nano /etc/systemd/system/frps.service |
输入以下内容:
1 | [Unit] |
启动并启用服务:
1 | # 重新加载 systemd 配置 |
4. FRP 客户端配置
4.1 下载并安装 FRP
在内网机器(IP:<内网IP>
)上执行以下操作:
1 | # 切换到 /opt 目录(需要管理员权限) |
4.2 配置客户端
创建并编辑客户端配置文件:
1 | nano frpc.toml |
在编辑器中输入以下内容:
1 | # FRP 客户端配置文件 |
4.3 启动客户端
方式一:用户级服务(推荐)
创建用户级 systemd 服务:
1 | # 创建用户级 systemd 服务目录 |
输入以下内容:
1 | [Unit] |
启动并启用服务:
1 | # 重新加载用户级 systemd 配置 |
方式二:系统级服务
创建系统级 systemd 服务:
1 | sudo nano /etc/systemd/system/frpc.service |
输入以下内容:
1 | [Unit] |
启动并启用服务:
1 | # 重新加载 systemd 配置 |
5. 测试连接
5.1 检查服务状态
检查服务端状态
1 | # 检查 FRP 服务端状态 |
检查客户端状态
1 | # 查看 FRP 客户端状态 |
5.2 测试 SSH 连接
在远程主机上,使用 SSH 客户端通过 FRP 暴露的端口连接到内网机器:
1 | ssh -p 6000 user@<FRP服务端地址> |
参数说明:
-p 6000
:指定连接的端口,此处为frpc
配置的remotePort
user@<FRP服务端地址>
:user
:内网机器的用户名<FRP服务端地址>
:FRP 服务端的域名或 IP 地址
5.3 验证连接成功
如果连接成功,您应该能够正常登录到内网机器,并看到类似以下的提示:
1 | Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-88-generic x86_64) |
6. 常见问题与解决方案
6.1 连接失败
问题:无法通过 FRP 连接到 SSH 服务
解决方案:
- 检查 FRP 服务端和客户端是否正常运行
- 确认防火墙设置,确保相关端口已开放
- 验证配置文件中的端口号和认证令牌是否正确
- 检查网络连接是否正常
6.2 服务启动失败
问题:FRP 服务无法启动
解决方案:
- 检查可执行文件权限:
sudo chmod +x /opt/frp_0.63.0_linux_amd64/frps
- 验证配置文件语法是否正确
- 查看服务日志:
sudo journalctl -u frps -f
- 确认路径配置是否正确
6.3 连接不稳定
问题:SSH 连接经常断开
解决方案:
- 在 SSH 客户端配置中添加保活设置
- 检查网络稳定性
- 考虑使用 KCP 协议提高连接稳定性
- 调整 FRP 的重连参数
6.4 安全建议
- 使用强密码:为 SSH 用户设置强密码
- 密钥认证:使用 SSH 密钥替代密码认证
- 限制访问:在 FRP 配置中限制允许的 IP 地址
- 定期更新:保持 FRP 版本更新
- 监控日志:定期检查 FRP 和 SSH 日志
总结
通过以上步骤,您已经成功配置了 FRP 来实现 Ubuntu 服务器的远程 SSH 访问。FRP 提供了一个安全、高效的内网穿透解决方案,让您能够轻松访问位于内网或防火墙后的服务器。
关键要点:
- 确保服务端和客户端的认证令牌一致
- 正确配置防火墙规则
- 使用 systemd 服务确保自动启动
- 定期检查服务状态和日志
如果您在使用过程中遇到任何问题,请参考常见问题与解决方案部分,或查看 FRP 官方文档获取更多帮助。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 高利明的空间!
评论