type
status
date
slug
summary
tags
category
icon
password
comment_flag
SLUGS
场景
需求:
- Linux主机A,可以访问外网,但是没有公网ip;部署了wandb、ssh或其他程序;
- 个人PC(例如MacOS),可以访问外网,也没有公网ip,与主机A不在同一局域网。希望能访问主机A上的wandb,且通过ssh连接主机A。
思路:
- 拥有一台远程Linux服务器B,可以访问外网,且有公网ip(这样主机A和个人PC都可以访问服务器B)。
- 使用frp来将服务器B当作“代理”:
下载frp软件
在github上下载相应的服务器端与客户程序:
服务器B上的操作
安装frps并配置
关注以下文件:
前两个文件(s结尾代表server)分别是服务端程序和服务端配置文件,后两个文件(c结尾代表client)分别是客户端程序和客户端配置文件。此时,我们在配置公网服务器,因此修改frps.toml:
添加到systemd自启动
vim /etc/systemd/system/frps.service
并且你需要在防火墙里放行7000、7500这两个端口。
在个人PC上访问 http://服务器ip:7500,就可以看到frp server的状态。
主机A的配置
安装frpc并配置
frpc.toml
上面的[[proxies]]板块是添加的代理服务
添加到systemd自启动
类似服务器B的操作,这里假设主机A是以普通用户添加systemd自启动。
如果主机A的普通用户没有开启systemd自启动功能,参考systemd/User - ArchWiki (archlinux.org)执行loginctl enable-linger
username
开启。
vim ~/.config/systemd/user/frpc.service
达到的效果
- 个人PC通过
ssh xxx@服务器ip:221
就能通过代理服务器远程连接主机A了。
- 个人PC通过访问
http://@服务器ip:1991
就能通过代理服务器访问主机A中的wandb服务了。
参考: