树莓派-SSH反向隧道配置外网访问

树莓派-SSH反向隧道配置外网访问

家里架设了一个树莓派, 想要在外网访问一下, 找到了通过SSH反向隧道设置方法
需要一个外网可以访问的固定IP的服务器转发.

基础情况

  • 内网树莓派情况
    ip: 192.168.1.19
    ssh: 22
    user: pi

  • 外网服务器
    ip: 10.10.10.10
    ssh: 8888
    绑定转发: 9999

内网树莓派配置秘钥认证登陆

> ssh-keygen -t rsa
# 树莓派家目录下 生成两个文件 ~/.ssh/id_rsa  ~/.ssh/id_rsa.pub
# 拷贝公钥到远程服务器的 authorized_keys 文件
> ssh-copy-id -i .ssh/id_rsa.pub  remote_user@10.10.10.10 -p port
# 或者手工拷贝  .ssh/id_rsa.pub 添加到 远程服务器 authorized_keys 文件中
> cat .ssh/id_rsa.pub >> remote_user@10.10.10.10 -p port

外网服务器配置

修改 /etc/ssh/sshd_config 文件, 设置

GetewayPorts yes
TCPKeepAlive yes
ClientAliveInterval 60
ClientAliveCountMax 3

重启ssh服务 server sshd restart

内网树莓派配置

ssh -fCNR 9999:localhost:22 user_remote@10.10.10.10 -p 22

内网树莓派机器执行上述命令
9999 外网服务器代理端口, 代理所有请求转发到内网22端口

访问服务器9999转发到树莓派

任意shell 执行 ssh pi@10.10.10.10:9999
提示输入树莓派口令, 即可登录树莓派

外网服务器还可以设置端口代理转发端口

ssh -fCNL "*:9988:localhost:9999" localhost -p 22

外网服务器执行上述命令
*:9988 任意机器访问9988端口, 转发到本地(外网服务器)的99999端口
转发到9999端口的数据在转发到 内网树莓派 22端口

以上可以外网访问内网树莓派, 但是会超时断开连接, 一下使用autossh 待更新验证
autossh -M 12041 -fCNR 12040:localhost:22 root@45.78.48.34 -p 29461

frp内网穿透

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,
为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
最新release 下载最新版本

查看系统版本及下载

root@localhost:~# uname -a
Linux localhost.localdomain 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u2 (2017-06-26) x86_64 GNU/Linux
root@localhost:~# arch
x86_64
# 使用linux 64位版本

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l GNU/Linux
pi@raspberrypi:~ $ arch
armv7l
# 使用 arm 版

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

服务器及树莓派各自下载并解压后

  • 外网服务器端
    服务器端关注 frpsfrps.ini 文件
    编辑frps.ini文件
[common]
bind_port = 9999

此端口需要服务器开放,用来接收数据转发到内网树莓派指定端口(如: 22)
外网开启服务, 保存日志
nohup ./frps -c ./frps.ini >> runlog.log &

  • 内网树莓派
    树莓派关注 frpcfrpc.ini 文件
    编辑frpc.ini文件
[common]
server_addr = 10.10.10.10
server_port = 9999

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

common段 配置外网服务器的地址和转发端口
ssh段 配置协议和内网ssh地址/端口
其中 remote_port是外网登陆树莓派的端口 使用ssh -p 9988 local_user@10.10.10.10登陆内网
内网开启服务, 保存日志
nohup ./frpc -c ./frpc.ini >> runlog.log &

全部配置完成!
使用ssh -p 9988 local_user@10.10.10.10登陆内网

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容