使用FRP实现内网服务器安全远程访问完整指南

需求背景

在现代科研和工作中,我们经常需要访问位于内网环境的实验室服务器。由于网络安全限制,这些服务器通常无法直接从外部网络访问。本文将介绍如何使用FRP(Fast Reverse Proxy)工具,通过一台具有公网IP的服务器作为中转,实现安全、便捷的内网服务器远程访问。

具体需求场景:

  • 实验室服务器:运行于内网环境,无法直接从外部访问
  • 内网Windows电脑:位于工位,既能访问内网又能连接互联网
  • 公网服务器:拥有公网IP地址,作为访问中转
  • 个人电脑:位于外部网络,需要远程连接实验室服务器

整体架构

个人电脑(外部网络) → 公网服务器 → 内网Windows(FRP客户端) → 实验室服务器

环境准备

1. 下载FRP工具

访问FRP官方GitHub仓库:https://github.com/fatedier/frp/releases

根据你的系统架构下载对应版本:

  • 公网服务器(Linux):通常选择 frp_*_linux_amd64.tar.gz
  • 内网Windows电脑:选择 frp_*_windows_amd64.zip

配置步骤

第一步:配置公网服务器(FRP服务端)

1. 解压并安装FRP
tar -xzf frp_*_linux_amd64.tar.gz
cd frp_*_linux_amd64
2. 编辑服务端配置文件 frps.ini
[common]
bind_port = 7000
token = your_secure_token_here
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = your_dashboard_password
3. 启动FRP服务端
./frps -c frps.ini

建议使用systemd管理服务:
创建文件 /etc/systemd/system/frps.service

[Unit]
Description=FRP Server
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/path/to/frps -c /path/to/frps.ini

[Install]
WantedBy=multi-user.target

启用并启动服务:

sudo systemctl enable frps
sudo systemctl start frps

第二步:配置内网Windows电脑(FRP客户端)

1. 解压FRP客户端

将下载的Windows版本FRP解压到合适目录,如 C:\frp\

2. 编辑客户端配置文件 frpc.ini
[common]
server_addr = 你的公网服务器IP
server_port = 7000
token = your_secure_token_here

[lab_ssh]
type = tcp
local_ip = 实验室服务器IP
local_port = 22
remote_port = 6000
3. 配置FRPC为开机启动服务

我们将使用Windows任务计划程序来实现开机自启动:

创建启动脚本 start_frpc.bat

@echo off
cd /d "C:\frp"
frpc.exe -c frpc.ini

配置任务计划程序:

  1. Win + R,输入 taskschd.msc 打开任务计划程序

  2. 点击右侧"创建任务"

  3. 常规选项卡

    • 名称:FRPC AutoStart
    • 描述:Auto start FRPC client on system boot
    • 勾选"不管用户是否登录都要运行"
    • 勾选"使用最高权限运行"
  4. 触发器选项卡

    • 点击"新建",选择"启动时"
  5. 操作选项卡

    • 点击"新建"
    • 操作:“启动程序”
    • 程序/脚本:C:\frp\start_frpc.bat
    • 起始于:C:\frp
  6. 条件选项卡

    • 取消勾选"只有在计算机使用交流电源时才启动此任务"
    • 取消勾选"只有在以下网络连接可用时才启动"
  7. 设置选项卡

    • 勾选"允许按需运行任务"
    • 勾选"如果任务失败,重新启动,时间间隔:1分钟,尝试3次"

点击"确定"并输入管理员密码完成配置。

第三步:配置SSH密钥认证

1. 生成SSH密钥对

个人电脑上生成SSH密钥:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

这将生成两个文件:id_rsa(私钥)和 id_rsa.pub(公钥)

2. 分发公钥

将公钥内容添加到实验室服务器的 ~/.ssh/authorized_keys 文件中:

# 在实验室服务器上执行
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

使用同样的方法将公钥添加到公网服务器中

3. 配置SSH客户端

在个人电脑上创建SSH配置文件 ~/.ssh/config

Host lab-server
    HostName 公网服务器IP
    Port 6000
    User 实验室服务器用户名
    IdentityFile ~/.ssh/id_rsa
    ServerAliveInterval 60
    TCPKeepAlive yes

第四步:安全加固

1. 强化SSH配置

在实验室服务器上编辑 /etc/ssh/sshd_config

PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
AllowUsers 你的用户名
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2

重启SSH服务:

sudo systemctl restart sshd
2. 防火墙配置

在公网服务器上开放必要端口:

sudo ufw allow 7000    # FRP服务端口
sudo ufw allow 6000    # SSH映射端口
sudo ufw allow 7500    # 仪表板端口(可选)

测试连接

完成所有配置后,重启内网Windows电脑验证FRPC是否自动启动,然后在个人电脑上测试连接:

ssh lab-server

如果一切正常,你应该能够无需密码直接登录到实验室服务器。

故障排除

常见问题及解决方案:

  1. FRPC连接失败

    • 检查公网服务器防火墙设置
    • 验证token配置是否一致
    • 查看FRPC日志文件
  2. SSH连接失败

    • 确认公钥已正确添加到实验室服务器
    • 检查SSH配置文件中的端口和IP地址
    • 验证实验室服务器SSH服务正常运行
    • 检查公网服务器的安全组对应端口是否放开
  3. 开机自启动失效

    • 检查任务计划程序中的配置
    • 确认执行账户有足够权限
    • 查看系统事件日志获取详细错误信息

总结

通过本文的配置,我们成功实现了:

  • 通过FRP穿透内网限制,安全访问实验室服务器
  • 配置SSH密钥认证,实现无需密码的安全登录
  • 设置FRPC开机自启动,确保服务持续可用
  • 加强安全配置,降低被攻击风险

这种方案不仅适用于科研环境,也可以应用于企业内网访问、远程办公等多种场景,提供了安全可靠的远程访问解决方案。

注意事项

  1. 定期更新FRP版本以获得安全修复和新功能
  2. 定期更换token增强安全性
  3. 监控公网服务器的流量和连接数
  4. 备份SSH密钥和配置文件

希望本指南能帮助你顺利配置内网远程访问,如有任何问题欢迎在评论区讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ProjectMax

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值