一、基本概念
IP:找到接入网络的某台主机。
端口号:找到主机上的某一个网络进程。
二、问题描述
一般位于不同局域网的两台电脑是不能直接进行通信的(ping通),它们分配到的都是私网IP,只在当前网络具有特异性,诸如192.168.x.x等IP,它们需要借助公网IP通信。
三、如何借助公网IP进行不同局域网之间通信
3.1方案
第一种:使用SSH反向隧道(本文介绍)
第二种:使用frp
第三种:使用花生壳
3.2简述
以上都是内网穿透的方案。内网主机要找到公网服务器十分简单,反过来的话需要进行内网穿透,使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。
3.3SSH反向隧道原理
主机A建立与公网服务器B之间的联系,然后主机C找到服务器B便能借助服务器B建立与主机A的联系。
四、安装autossh
这里使用树莓派和公网服务器Ubuntu系统(做实验)
sudo apt install autossh
五、autossh的使用
5.1公网服务器配置
vi /etc/ssh/sshd_config
修改以下内容
GatewayPorts yes
重启服务
sudo service sshd restart
说明:不修改这个的话,公网服务器是使用127.0.0.1这个IP进行监听。
5.2树莓派配置免密码登录
5.2.1生成秘钥
ssh-keygen
一路回车
5.2.2将秘钥发给公网服务器
ssh-copy-id -i /home/pi/.ssh/id_rsa.pub 用户名@公网IP
输入密码
5.2.3验证
ssh 用户名@公网IP
5.3autossh常用参数介绍
-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-M 指定端口用于检测是否断开连接
5.4开启autossh
autossh -M 4000 -fNR 8080:localhost:8080 -fNR 9000:localhost:22 用户名@公网IP
服务器4000端口用于监听是否断开。
服务器8080端口“绑定”树莓派8080端口。
服务器9000端口“”绑定“”树莓派22端口。
六、应用
6.1使用公网IP登录树莓派
登录密码使用树莓派密码
6.2通过公网IP获取树莓派摄像头推流
6.2.1开启mjpg推流
6.2.2浏览器查看
http://公网IP:8080/