FRP 内网穿透:SSH(旧的)

目的:通过SSH远程连接到开发板

参考:通过 SSH 访问内网机器

需要:有公网IP的服务器

服务端程序下载安装运行

安装说明:https://gofrp.org/docs/setup/

首先登录系统,从网上下载frp软件:

https://github.com/fatedier/frp

版本选择 普通的amd内核的64位系统版本,系统版本可以通过命令查询到

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

重命名:

mv frp_0.38.0_linux_amd64 frp

配置文件:

vi  frps.ini 

frps.ini文件内容,默认即可

[common]
bind_port = 7000

服务端:防火墙放行端口7000、6000

启动服务端

正常启动

./frps -c ./frps.ini

nohup启动,不保留日志

nohup ./frps -c ./frps.ini >/dev/null 2>&1 &

客户端(开发板linux)下载安装运行

注意版本

开发板一般是arm架构系统32/64位系统

32为ARM:https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_arm.tar.gz

64为ARM:https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_arm64.tar.gz

解压到 /opt/ 目录下

比如32位程序

修改配置文件frpc.ini

[common]
server_addr = 服务端公网IP地址
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

运行服务端

./frpc -c ./frpc.ini

如果还有开发板客户端,就换个端口比如:6001,再来一次

远程登录开发板

使用SSH工具登录

  • 用户名,密码:就是开发板上的用户名和密码
  • IP地址:公网IP
  • 端口:6000

设置客户端开机启动

为frpc配置systemd的service文件

vi /usr/lib/systemd/system/frpc.service

frpc.service文件内容

[Unit]
Description=frpc
Wants=network-online.target
After=network.target network-online.target
Requires=network-online.target

[Service]
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.ini
ExecStop=/bin/kill $MAINPID
Restart=always
RestartSec=5
StartLimitInterval=0

[Install]
WantedBy=multi-user.target

解释一下上面文件内容

  • Wants:本单元启动了,它“想要”的单元也会被启动。但是这个单元若启动不成功,对本单元没有影响。
  • Requires: 这个单元启动了,那么它“需要”的单元也会被启动; 它“需要”的单元被停止了,它自己也活不了。但是请注意,这个设定并不能控制启动顺序,因为它“需要”的单元启动也需要时间,若它“需要”的单元启动还未完成,就开始启动本单元,则本单元也无法启动,所以不建议使用这个字段。
  • OnFailure:若本单元启动失败了,那么启动这个单元作为折衷。
  • Before/After:指定启动顺序。
Wants=network-online.target #其中network.target代表有网路,network-online.target代表一个连通着的网络。

ExecStart=/opt/frp/frpc -c /opt/frp/frpc.ini #是要运行的命令,文件要绝对地址。

Restart=always #总是重启
RestartSec=5 #自动重启当前服务间隔的秒数
StartLimitInterval=0 #无限次重启,默认是10秒内如果重启超过5次则不再重启,设置为0表示不限次数重启

使frpc服务生效

systemctl daemon-reload
systemctl enable frpc
systemctl start frpc

设置服务端开机启动

在frps.service里写入内容

vi /usr/lib/systemd/system/frps.service

frps.service 内容

[Unit]
Description=frps service
After=network.target

[Service]
ExecStart=/opt/frp/frps -c /opt/frp/frps.ini

[Install]
WantedBy=multi-user.target

使frpc服务生效

systemctl daemon-reload
systemctl enable frps
systemctl start frps

遇到的问题

树莓派配置了frpc服务,开机自启的时候失败,报错connect: Network is unreachable
出现这个的原因是运行frpc的时候尚未联网,导致frpc退出。
http://www.mmuaa.com/post/537d04e936b78620.html

frp 开机自启动,解决了网络依赖问题。
https://blog.csdn.net/programguo/article/details/108435717

systemd的设置详细,阮一峰的教程
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

设置完了就可以了

posted @ 2021-11-19 16:18  ioufev  阅读(614)  评论(0)    收藏  举报