1. 环境准备
- 一台 Windows (内网机器)
- 一个 Linux 服务器(公网机器)
2. 配置
2.1 下载 frp
根据不同的部署设备需要下载不同的 frp 版本:
# git 地址
https://github.com/fatedier/frp.git
# relaease 地址
https://github.com/fatedier/frp/releases
这里使用的是 v0.37.1,需要下载 windows 版本和 Linux 版本,根据设备的不同,选择 X86 或者 X64。
2.1 Windows 配置
首先需要开启 Windows 的 OpenSSH,方便后续代理 SSH。
- 在 设置 - 可选功能 中搜索 OpenSSH,安装服务端和客户端(默认已安装)。
- 配置服务启动。
在管理 - 服务 中找到 OpenSSH 相关的服务将其启动,被配置 SSH 可以为自动启动,方便日后使用。 - 检查服务状态
在 命令行 中执行:
Get-service -Name *ssh*
# 正常结果如下
Status Name DisplayName
------ ---- -----------
Running ssh-agent OpenSSH Authentication Agent
Running sshd OpenSSH SSH Server
- 配置 Frp
首先因为 Windows 是客户端,所以将其中的 s 结束的文件删除,仅保留 c 后缀的文件:
之后打开 frpc.ini 文件(以文档形式打开即可)。
简单配置如下:
[common]
server_addr = 服务器的地址
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[web]
type = http
local_port = 9001
custom_domains = 服务器的地址
2.2 Linux 服务器的配置
- 配置 Frp
同样的,Linux 作为服务器,需要将 frp 下 c 后缀的文件删除,调整后目录结构如下:
调整完成后就需要配置 frps.init,具体配置如下:
[common]
bind_port = 7000
# 用于启动 HTTP 协议穿透
vhost_http_prt = 8000
dashboard_addr = 0.0.0.0
dashboard_port = 7500
# dashboard user and passwd for basic auth protect
dashboard_user = admin
dashboard_pwd = 123456
- 将 frp 配置为 Linux 服务
首先将 frp 目录下的 systemd/frps.service 文件复制到 /lib/systemd/system 目录下:
cp ~/frp_base_path/systemd/frps.service /lib/systemd/system
之后修改一下配置:
vim frps.service
修改后如下:
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
# 启动的用户
User=root
Restart=on-failure
RestartSec=5s
# 这里的目录需要配置到本地的 frp 目录
ExecStart=/root/soft/frp_0.37.1_linux_amd64/frps -c /root/soft/frp_0.37.1_linux_amd64/frps.ini
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
- 加载 frp 服务
# 加载服务
systemctl daemon-reload
# 启用服务
systemctl enable frps
3. 启动、测试
3.1 启动
- windows 端:在命令行中执行:
frpc -c frpc.ini
- Linux 端
systemctl start frps
3.2 测试
首先访问 Linux 的 frp Dashboard,地址是服务器地址:dashboard_port:
到 Proxies - TCP 中可以看到已经上线的服务。
使用任意其他客户端的 ssh,进行 ssh 连接:
ssh -p remote_port 用户名@服务器地址
输入密码后即可正常使用。
同样的还配置了 HTTP 端口映射,这里设置的是 9001 端口映射,如果在内网中搭建 HTTP 服务,可以访问服务器的 9001 端口就可以访问到内网。