GPU服务器又连不上了,实验室的师兄弟们表示很捉急,连上去一检查,发现是 frp 内网穿透服务挂了,研究了一番systemd 服务配置,决定配置 frp 为systemd 服务,实现开机自启。
Frp
frp 所在的文件夹为 /home/user/frp
编写 frps.ini 文件作为服务端配置,编写 frpc.ini 作为客户端配置。
frps.ini 中写入 server 端要监听的端口即可,如下:
[common]
bind_port = 25111
frpc.ini 中写入
[common]
server_addr = 45.100.145.55
server_port = 25111
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 25222
启动 frps
nohup ./frps -c frps.ini >> frps.log 2>&1 &
启动 frpc
./frpc -c ./frpc.ini
多 client 使用同一 server
server 端配置不变, client 端的 frpc.ini 配置文件中方括号中配置不同的名称和端口即可,frp 使用方括号中的内容来识别客户端的不同服务。连接时使用的是服务器 ip + frpc.ini 中配置的 remote_port。
[common]
server_addr = 45.100.145.55
server_port = 25111
[ssh1]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 25222
[ssh2]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 25223
systemd 服务
将 frp client 配置为 systemd 服务实现重启后自动重启
sudo vi /etc/systemd/system/frpc.service
写入下面内容, ExecStart 为frp 服务启动命令,注意修改路径为自己的 frp 路径
[Unit]
Description=FRP Client Daemon
After=network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/home/user/.frp/frp_0.29.0_linux_amd64/frpc -c /home/user/.frp/frp_0.29.0_linux_amd64/frpc.ini
Restart=always
RestartSec=20s
User=nobody
[Install]
WantedBy=multi-user.target
然后启动 frpssudo systemctl start frpc
再打开自启动sudo systemctl enable frpc
错误排查
查看报错信息
sudo journalctl -xe
报错信息如下:
报错显示为权限不足,更改 /etc/systemd/system/frpc.service 中 User 为具有权限的用户即可。