需求背景
在现代科研和工作中,我们经常需要访问位于内网环境的实验室服务器。由于网络安全限制,这些服务器通常无法直接从外部网络访问。本文将介绍如何使用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
配置任务计划程序:
-
按
Win + R,输入taskschd.msc打开任务计划程序 -
点击右侧"创建任务"
-
常规选项卡:
- 名称:
FRPC AutoStart - 描述:
Auto start FRPC client on system boot - 勾选"不管用户是否登录都要运行"
- 勾选"使用最高权限运行"
- 名称:
-
触发器选项卡:
- 点击"新建",选择"启动时"
-
操作选项卡:
- 点击"新建"
- 操作:“启动程序”
- 程序/脚本:
C:\frp\start_frpc.bat - 起始于:
C:\frp
-
条件选项卡:
- 取消勾选"只有在计算机使用交流电源时才启动此任务"
- 取消勾选"只有在以下网络连接可用时才启动"
-
设置选项卡:
- 勾选"允许按需运行任务"
- 勾选"如果任务失败,重新启动,时间间隔: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
如果一切正常,你应该能够无需密码直接登录到实验室服务器。
故障排除
常见问题及解决方案:
-
FRPC连接失败
- 检查公网服务器防火墙设置
- 验证token配置是否一致
- 查看FRPC日志文件
-
SSH连接失败
- 确认公钥已正确添加到实验室服务器
- 检查SSH配置文件中的端口和IP地址
- 验证实验室服务器SSH服务正常运行
- 检查公网服务器的安全组对应端口是否放开
-
开机自启动失效
- 检查任务计划程序中的配置
- 确认执行账户有足够权限
- 查看系统事件日志获取详细错误信息
总结
通过本文的配置,我们成功实现了:
- 通过FRP穿透内网限制,安全访问实验室服务器
- 配置SSH密钥认证,实现无需密码的安全登录
- 设置FRPC开机自启动,确保服务持续可用
- 加强安全配置,降低被攻击风险
这种方案不仅适用于科研环境,也可以应用于企业内网访问、远程办公等多种场景,提供了安全可靠的远程访问解决方案。
注意事项
- 定期更新FRP版本以获得安全修复和新功能
- 定期更换token增强安全性
- 监控公网服务器的流量和连接数
- 备份SSH密钥和配置文件
希望本指南能帮助你顺利配置内网远程访问,如有任何问题欢迎在评论区讨论。

447

被折叠的 条评论
为什么被折叠?



