树莓派-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
服务器及树莓派各自下载并解压后
- 外网服务器端
服务器端关注frps
和frps.ini
文件
编辑frps.ini
文件
[common]
bind_port = 9999
此端口需要服务器开放,用来接收数据转发到内网树莓派指定端口(如: 22)
外网开启服务, 保存日志
nohup ./frps -c ./frps.ini >> runlog.log &
- 内网树莓派
树莓派关注frpc
和frpc.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
登陆内网