• Home
  • About
    • dancingline photo

      dancingline

      Moon is a minimal, one column jekyll theme for your blog.

    • Learn More
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

frp实现树莓派ssh的内网穿透

02 Aug 2020

Reading time ~1 minute

准备工作

树莓派:3B+

一台有固定公网IP的服务器

frp:链接

操作流程

大部分的操作都可以参考frp的文档,这里还参考了一篇博客。

服务器端

服务器是64位的,Ubuntu的系统,下载对应版本的文件:

wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz

解压文件:

tar -xvzf frp_0.33.0_linux_amd64.tar.gz

进入解压后的文件夹并复制文件:

cd frp_0.33.0_linux_amd64/
# 可执行文件
sudo cp frps /usr/local/bin/frps 
sudo mkdir /etc/frp
# 服务器端配置文件
sudo cp frps.ini /etc/frp/frps.ini

修改配置文件

sudo vi /etc/frp/frps.ini

大约改成下面的样子

[common]
# 通信端口,可以自选
bind_port = 7999
# 下面三项是dashboard的内容,可以不管,如果设置了可以通过服务器地址:端口的方式查看dashboard
# 端口可以自己选择
dashboard_port = 7997
dashboard_user = your username
dashboard_pwd = your password

然后把服务添加到systemd的开机启动里,首先把文件复制过去

sudo cp frps.service /usr/lib/systemd/system/frps.service
# 如果systemd下面没有system文件夹的话可以创建一个

修改这个文件:

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

基本上不怎么用改了

[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
# 启动设置,这里的对应上面可执行文件和配置文件的路径
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini

[Install]
WantedBy=multi-user.target

最后链接过去

sudo systemctl enable frps
# 最后一项frps就是service的文件名,改了别的名字同理

启动服务

sudo systemctl start frps
树莓派端

树莓派是32位的arm机器,所以下载对应的frp:

wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_arm.tar.gz

同样解压文件:

tar -xvzf frp_0.33.0_linux_arm.tar.gz

进入目录:

cd frp_0.33.0_linux_arm/

复制文件:

# 可执行文件
sudo cp frpc /usr/local/bin/frpc 
sudo mkdir /etc/frp
# 客户端配置文件
sudo cp frpc.ini /etc/frp/frpc.ini

修改客户端配置文件:

sudo vi /etc/frp/frpc.ini

主要设置的几项:

[common]
# 服务器地址,IP或者网址
server_addr = x.x.x.x
# 通信端口,要跟服务器端一样
server_port = 7999

[ssh]
type = tcp               
local_ip = 127.0.0.1
# 本地ssh端口
local_port = 22
# 穿透之后的ssh端口,可以自选,启动之后就通过server_addr:remote_port来访问树莓派的ssh
remote_port = 7998

同样创建开机启动,复制文件:

sudo  cp frpc.service /usr/lib/systemd/system/frpc.service

修改文件:

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

同样没有什么大改的:

[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
Restrt=on-failure
RestartSec=5s
# 同样这里的可执行文件和配置文件路径要跟上面一致
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini
ExecReload=/usr/local/bin/frpc reload -c /etc/frp/frpc.ini

[Install]
WantedBy=multi-user.target

跟服务器端一样需要链接文件过去:

sudo systemctl enable frpc

然后启动:

sudo systemctl start frpc

全部完成以后从外网ssh连接树莓派使用frpc.ini中的server_addr和remote_port。

没有配置把树莓派上的web服务暴露到外网上的部分,这个需求可以继续参考官方文档和这篇文章。



树莓派内网穿透frp Share Tweet +1