Linux公网通信(一)神器autossh(树莓派跨局域网远程监控和远程登录)

一、基本概念

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/
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现autossh的自启动,你可以按照以下步骤进行操作: 1. 创建一个启动脚本:首先,你需要创建一个启动脚本,以便在系统启动时运行autossh。你可以使用任何文本编辑器来创建一个新的脚本文件,比如autossh_start.sh。 2. 编辑启动脚本:在启动脚本中,你需要指定autossh的命令和参数。例如,如果你要使用autossh来建立一个SSH隧道连接,可以在启动脚本中添加以下内容: ```bash #!/bin/bash autossh -M 0 -f -N -L <本地端口>:<目标主机>:<目标端口> <SSH用户名>@<目标主机IP> ``` 请将 `<本地端口>`, `<目标主机>`, `<目标端口>`, `<SSH用户名>` 和 `<目标主机IP>` 替换为实际的值。 3. 保存并退出:完成编辑后,请保存并退出启动脚本。 4. 设置脚本权限:运行以下命令,以确保启动脚本具有执行权限: ```bash chmod +x autossh_start.sh ``` 5. 将脚本添加到启动项:将启动脚本添加到系统的启动项中,以便在系统启动时自动运行。具体的操作方式可能因操作系统而异。 - 对于基于 systemd 的系统(如Ubuntu 16.04+),你可以创建一个名为 `autossh.service` 的服务单元文件,并将其放置在 `/etc/systemd/system/` 目录下。在文件中添加以下内容: ``` [Unit] Description=Autossh Service After=network.target [Service] ExecStart=/path/to/autossh_start.sh [Install] WantedBy=default.target ``` 请将 `/path/to/autossh_start.sh` 替换为实际的启动脚本路径。 然后,运行以下命令以重新加载 systemd 配置并启用服务: ```bash sudo systemctl daemon-reload sudo systemctl enable autossh.service ``` - 对于其他系统(如 CentOS、Red Hat、Debian 等),你可以将启动脚本的符号链接添加到 `/etc/rc.d/rc.local` 文件中。运行以下命令将启动脚本添加到 `rc.local` 文件中: ```bash sudo ln -s /path/to/autossh_start.sh /etc/rc.d/rc.local ``` 请将 `/path/to/autossh_start.sh` 替换为实际的启动脚本路径。 6. 重新启动系统:完成上述步骤后,重新启动系统,autossh应该会在系统启动时自动运行。 这样,autossh就会在系统启动时自动建立 SSH 隧道连接。记得根据你的实际需求和配置进行相应的调整。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值