通过frp穿透内网ssh访问树莓派

大三本校网十分诡异,电脑可以跨校区连接树莓派,却不可以在自己的寝室连。于是不得不需要想个办法连接。

而且,如果树莓派无论到哪里都能有一个确定的连接方式,就会非常方便。例如:使用手机热点转发Wi-Fi或者流量来实现短时间的访问。此外,还可以直接在自己的电脑里面做一个alias简化访问。

流程

frp官方中文文档 | Release

服务器端:

  1. wget对应版本的frp,linux_amd64 v0.23.3版本如下:`

     wget https://github.com/fatedier/frp/releases/download/v0.23.3/frp_0.23.3_linux_amd64.tar.gz
    
  2. 解压缩:tar -xvzf frp_0.23.3_linux_amd64.tar.gz

  3. 移动文件位置:`

      sudo cp frps /usr/local/bin/frps 
      sudo mkdir /etc/frp
      sudo cp frps.ini /etc/frp/frps.ini
    
  4. 输入sudo nano /etc/frp/frps.ini修改配置文件:

    [common]
    common bind_port =            # 连接端口,只要不冲突随便设置
    dashboard_port =              # frp网页端口,只要不冲突随便设置  
    dashboard_user =              # frp网页登录用户名,仅用于访问dashboard
    dashboard_pwd =               # frp网页登录密码,仅用于访问dashboard
    token =                       # frps.ini和frpc.ini中一致即可,设置多难都可以
    
  5. 输入sudo nano /usr/lib/systemd/system/frps.service创建开机自启动服务,接着输入:

    [Unit]
    Description=frps
    After=network.target
    
    [Service]
    TimeoutStartSec=30
    ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
    ExecStop=/bin/kill $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    
  6. 输入sudo systemctl enable frps并重启。

树莓派端

  1. wget对应版本的frp,linux_arm v0.23.3版本如下:`

    wget https://github.com/fatedier/frp/releases/download/v0.23.3/frp_0.23.3_linux_arm.tar.gz 
    
  2. 解压缩文件: tar -xvzf frp_0.23.3_linux_arm.tar.gz

  3. 移动文件位置:

    sudo cp frpc /usr/local/bin/frpc 
    sudo mkdir /etc/frp
    sudo cp frpc.ini /etc/frp/frpc.ini
    
  4. 输入sudo nano /etc/frp/frpc.ini修改配置文件:

    [common]
    server_addr =            # 服务器的地址,有域名可以填域名
    server_port =            # 要和前面的common bind_port一致  
    token =                  # 要和frps.ini的token中一致
    login_fail_exit = false  # 开机自启动需要
    
    [ssh]
    type = tcp               
    local_ip = 127.0.0.1       
    remote_port =            # 你用来ssh访问树莓派的那个端口,不冲突随便设
    
  5. 输入sudo nano /usr/lib/systemd/system/frpc.service创建开机自启动服务,接着输入:

    [Unit]
    Description=frpc
    After=network.target
    
    [Service]
    TimeoutStartSec=30
    ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini
    ExecStop=/bin/kill $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    
  6. 输入sudo systemctl enable frpc并重启。

Note:

  1. Dashboard的三个选项其实是可有可无的,如果不想填可以删掉。Dashboard主要是用来看一下端口号和连接情况(如流量统计等)。更多的选项可以参见官方的frps.ini

  2. 参见讨论旧版本里面的privilege_token已经变成为token。我这里两个frp版本不同,导致了原有privilege_token的失效,但是不会影响使用。

  3. 开机自启动要写入在服务器端写入login_fail_exit = false,原因见下文。


《《《《《《《《《《以下没有额外要操作的步骤》》》》》》》》》》》


开机自启动

一开始参照借助 frp 随时随地访问自己的树莓派这篇文章使用systemd来开机自启动,但是发现似乎只在服务器端有效,树莓派总是启动失败.
利用systemctl status frpc参看日志,发现结果都是:

frpc.service - frpc Loaded: loaded
(/usr/lib/systemd/system/frpc.service; enabled; vendor preset: enabl
Active: failed (Result: exit-code) since Sun 2019-01-20 06:03:11 CST;
16min ago Process: 451 ExecStop=/bin/kill $MAINPID (code=exited,
status=1/FAILURE) Process: 424 ExecStart=/usr/local/bin/frpc -c
/etc/frp/frpc.ini (code=exited, status Main PID: 424 (code=exited,
status=1/FAILURE)

1月 20 06:03:11 rpi kill[451]: -, -s, --signal 1月 20
06:03:11 rpi kill[451]: specify the
to be sent 1月 20 06:03:11 rpi kill[451]: -l, --list=[] list
all signal names, or conver 1月 20 06:03:11 rpi kill[451]: -L, --table
list all signal names in a nice 1月 20 06:03:11 rpi kill[451]: -h,
–help display this help and exit 1月 20 06:03:11 rpi kill[451]: -V, --version output version information and exit 1月 20 06:03:11 rpi kill[451]: For more details see kill(1). 1月 20 06:03:11 rpi
systemd[1]: frpc.service: Control process exited, code=exited statu 1月
20 06:03:11 rpi systemd[1]: frpc.service: Unit entered failed state.
1月 20 06:03:11 rpi systemd[1]: frpc.service: Failed with result
‘exit-code’.

参见Github上的讨论,得知fprc不支持无连接启动和无网络启动;作者后来新增了“log_fail_exit”选项以适应这两种环境。

其实在想,树莓派的“boot option”里面有一项“Wait for Network at Boot”,不知道能不能解决这个问题。但是有人反映即便是在service里面调整为等待网络后连接,还是会出现连不上的情况,只不过错误变成“network unreachable”。

所以正确的姿势应该就是在一开始就在frpc.ini里面加入“login_fail_exit = false”。

  • 2
    点赞
  • 4
    收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论 5

打赏作者

Y.XD

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值