通过SSH反向代理连接内网的树莓派

通过SSH反向代理连接内网的树莓派

 

场景:

在办公室有一台树莓派,当我回家了或者在外面用手机网络无法进入内网,所以访问不到了。如果这个时候我需要 SSH 进去做一下设置,那么怎么解决这个问题呢?本文将给出一种使用 SSH 的代理功能的解决方案。

 

目的:通过一台公网linux机器连接内网的树莓派。

 

材料:

  1. 一台公网linux机器,这里用的是DigitalOcean的VPS。
  2. 树莓派

 

机器状况

机器 IP 用户名 备注
树莓派 192.168.0.A usr_a 目标服务器,在局域网中,可以访问 树莓派
VPS B.B.B.B usr_b 代理服务器,在外网中,无法访问 树莓派
手机等Client 可以直接访问 VPS,无法直接访问 树莓派

 

解决方案

在树莓派上做到 VPS的反向代理;在 VPS上做正向代理本地端口转发

 

环境需求

每台机器上都需要 SSH 客户端

树莓派、VPS上需要 SSH 服务器端。通常是 openssh-server。

在 Ubuntu 上安装过程为

 

sudo apt-get install openssl-server

 

实施步骤

 

建立 树莓派 到 VPS 的反向代理【树莓派 上操作】

ssh -fCNR <port_b1>:localhost:22 usr_b@B.B.B.B

<port_b1> 为 VPS 上端口,用来与 树莓派 上的22端口绑定。

 

建立 VPS 上的正向代理,用作本地转发。做这一步是因为绑定后的 端口只支持本地访问【VPS 上操作】

ssh -fCNL *:<port_b2>:localhost:<port_b1> localhost

<port_b2> 为本地转发端口,用以和外网通信,并将数据转发到 <port_b1>,实现可以从其他机器访问。

其中的*表示接受来自任意机器的访问。

现在在 Client 机器上可以通过 VPS ssh 到树莓派。

ssh -p <portb2> usra@B.B.B.B

至此方案完成。

同理,也可以建立反向代理通过VNC来连接内网树莓派的图形界面。

 

附:

 

SSH 参数解释

-f 后台运行

-C 允许压缩数据

-N 不执行任何命令

-R 将端口绑定到远程服务器,反向代理

-L 将端口绑定到本地客户端,正向代理

发表评论