FRP 内网穿透: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
设置完了就可以了

浙公网安备 33010602011771号