春节已至,回家后不方便登录校园网,但是仍有同学需要访问实验室服务器进行实验等其他任务。
遂通过frp搭建隧道,使外网可以直接SSH连接校园网中的服务器。
参考
- frp官网ssh样例,https://gofrp.org/docs/examples/ssh/
tlanyan博客-frp内网穿透教程,https://tlanyan.pp.ua/frp-tunnel-tutorial/
了解frp的基本概念 如何让frp以服务运行(普通运行,会在SSH连接断开后停止)
外网连接实验室(内网)服务器, https://www.jianshu.com/p/7209136faa40
帮我明白了整个流程,公网服务器和实验室服务器、访问者机器的角色
一、准备
- 固定IP的公网服务器一台(Azure服务器)
- 校园网中可SSH连接的实验室服务器若干台(以下步骤需要重复N次)
二、步骤
公网服务器作为fcp服务器,校园网服务器作为frp客户端。部署成功后,访问者主机使用SSH命令可直接访问校园网服务器。
- 公网服务器操作
- 在所需目录下,下载frp压缩包并解压
- 编辑frp公网服务器配置文件frps.ini
- 开放公网服务器入站端口(frp服务器服务端口和服务端口)
- 配置环境,以服务运行
- *网页登录frp管理服务
- 校园网服务器操作
- 在所需目录下,下载frp压缩包并解压
- 编辑frp客户端配置文件frpc.ini
- 开放公网服务器入站端口(对应每一个frp客户端,frp服务器都需要监听一个对应的端口)
- 配置环境,以服务运行
- 网页登录frp管理服务验证
2.1 公网服务器操作
本人选择Azure云服务器作为公网服务器,IP为104.208.104.70,请注意替换。
最好以非root用户进行以下操作,腾讯云添加sudo权限。
下载frp并解压
在 frp下载页面 选择合适版本下载。
在用户目录下创建frp目录,并在其中下载压缩包,并解压进入解压目录。
mkdir ~/frp
cd ~/frp
wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
tar -zxvf frp_0.38.0_linux_amd64.tar.gz
cd frp_0.38.0_linux_amd64
解压目录如下,其中frps系列文件主要用于frp服务器,frpc系列文件主要用于frp客户端(校园网服务器)。
稍后我们在校园服务器上也需要下载同样的软件包。
frp_0.38.0_linux_amd64
├── frpc
├── frpc_full.ini
├── frpc.ini
├── frps
├── frps_full.ini
├── frps.ini
├── LICENSE
└── systemd
├── frpc.service
├── frpc@.service
├── frps.service
└── frps@.service
编辑frp服务器配置文件frps.ini
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的
token = 12345678
# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true
开放公网服务器入站端口
在云服务器网络设置中,添加以上7000(frp服务器绑定端口)和7500(frp服务管理网页访问端口)TCP协议的入站规则。下图第一个红框。
配置环境,以服务运行
当前路径下,一般可以通过./frps -c frps.ini
直接开启服务,但是SSH连接断开后就会失效,所以需要借助systemd服务运行。
cd ~/frp/frp_0.38.0_linux_amd64/
sudo mkdir -p /etc/frp
sudo cp frps.ini /etc/frp
sudo cp frps /usr/bin
sudo cp systemd/frps.service /usr/lib/systemd/system/
sudo systemctl enable frps
sudo systemctl start frps
网页登录frp管理服务
顺利的话,可以登录公网ip:frp服务管理网页访问端口
查看frp的管理界面。下图已经有一个客户端连接。
2.2 校园网服务器操作
下载frp压缩包并解压
同公网服务器。
mkdir ~/frp
cd ~/frp
wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
tar -zxvf frp_0.38.0_linux_amd64.tar.gz
cd frp_0.38.0_linux_amd64
编辑frp客户端配置文件frpc.ini
# 服务端配置
[common]
server_addr = 104.208.108.70
# 请换成设置的服务器端口
server_port = 7000
token = 12345678
# 配置ssh服务,ssh9009是frp连接名,每个frp客户端都要设置不一样的
[ssh9018]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 9018 #这个端口就对应了一台实验室服务器的SSH连接,这里把端口和校园网服务器编号保持一致方便记忆
开放公网服务器入站端口
见公网服务器网络配置截图第二个红框。
将每台frp客户机在frp服务器上的对应端口也开放。
配置环境,以服务运行
cd ~/frp/frp_0.38.0_linux_amd64/
sudo mkdir -p /etc/frp
sudo cp frpc.ini /etc/frp
sudo cp frpc /usr/bin
sudo mkdir /usr/lib/systemd/system/
sudo cp systemd/frpc.service /usr/lib/systemd/system/
sudo systemctl enable frpc
sudo systemctl start frpc
网页登录frp管理服务验证
三、SSH远程登录
现在在在家过年也可以通过外网访问校园内网的实验室服务器了。
要连接上某台服务器,我们只需要记住四个变量就可以,frp服务器监听对应客户端的端口、该客户端服务器登录名和密码、frp服务器公网IP。
# 比如要连接编号9018服务器,使用如下命令即可
ssh -oPort=9018 ouc@104.208.108.70
# 或
ssh -p 9018 ouc@104.208.108.70
成功登录。