当前位置: 首页 > news >正文

无公网IP,公网SSH远程访问家中的树莓派教程

文章目录

    • 前言
  • 如何通过 SSH 连接到树莓派
  • 步骤1. 在 Raspberry Pi 上启用 SSH
  • 步骤2. 查找树莓派的 IP 地址
  • 步骤3. SSH 到你的树莓派
  • 步骤 4. 在任何地点访问家中的树莓派
    • 4.1 安装 Cpolar内网穿透
    • 4.2 cpolar进行token认证
    • 4.3 配置cpolar服务开机自启动
    • 4.4 查看映射到公网的隧道地址
    • 4.5 ssh公网远程访问树莓派
    • 4.6 修改树莓派默认密码(可选)
  • 步骤 5. 为SSH远程树莓派配置固定公网地址
    • 命令行使用举例:
    • 修改cpolar配置文件
    • 总结:

前言

本篇文章主要讲解树莓派+cpolar组合的作用,可以实现:

  • 如何在 Raspberry Pi 中启用 SSH
  • 如何通过 SSH 连接到 Raspberry Pi设备
  • 如何远程在任何地点访问家中的树莓派

在使用树莓派 (Raspberry Pi) 可以做的所有事情中,将其用作为家庭网络中的服务器非常流行。微小的占地面积和低功耗使其成为运行轻量级服务器的完美设备。

在这种情况下,您应该可以做的一件事是在 树莓派 (Raspberry Pi) 上运行命令,而无需插入显示器、键盘、鼠标,也不必每次都将自己移动到树莓派(Raspberry Pi) 所在的位置。

您可以通过从任何其他计算机、笔记本电脑、台式机甚至手机通过 SSH(安全外壳)登录您的 Raspberry Pi 来实现这一点。让我告诉你怎么做。

如何通过 SSH 连接到树莓派

20221117163606

我假设您在 Pi 上运行 Raspbian 并已通过以太网或 WiFi 成功连接到网络。重要的是,您的 Raspberry Pi 已连接到网络,否则您将无法通过 SSH 连接到它(抱歉我说得太明显了)。

步骤1. 在 Raspberry Pi 上启用 SSH

SSH 在 Raspberry Pi 中默认处于禁用状态,因此您必须在全新安装 Raspbian 后打开 Pi 时启用它。

首先通过导航菜单转到 Raspberry Pi 配置窗口。

  • 树莓派菜单,树莓派配置

20221117163613

现在,转到接口选项卡,启用 SSH 并重新启动您的 Pi。

  • 在树莓派上启用 SSH

20221117163625

您还可以在不通过终端的情况下启用 SSH。只需输入命令 sudo raspi-config 然后转到高级选项以启用 SSH。

步骤2. 查找树莓派的 IP 地址

在大多数情况下,您的 Raspberry Pi 将被分配一个本地 IP 地址,看起来像 192.168.x.x 或 10.x.x.x。您可以使用各种 Linux 命令来查找 IP 地址。

我在这里使用的是旧的 ifconfig 命令,但您也可以使用 ip address。

ifconfig

20221117163636

  • 树莓派网络配置

此命令显示所有活动网络适配器及其配置的列表。第一个条目(eth0)显示 IP 地址为 192.168.9.36,这是有效的。我使用以太网将我的 Raspberry Pi 连接到网络,因此它在 eth0 下。如果您在名为“wlan0”的条目下使用 WiFi 检查。

您还可以通过其他方式找到 IP 地址,例如检查路由器/调制解调器上的网络设备列表。

步骤3. SSH 到你的树莓派

现在您已经启用了 SSH 并找到了您的 IP 地址,您可以继续从任何其他计算机通过 SSH 连接到您的 Raspberry Pi。您还需要树莓派的用户名和密码。

默认用户名和密码是:

  • 用户名:pi
  • 密码:raspberry

如果您更改了默认密码,请使用新密码而不是上述密码。理想情况下,您必须更改默认密码。在过去,恶意软件感染了数千台使用默认用户名和密码的Raspberry Pi。

在要通过 SSH 连接到 Pi 的计算机上打开终端(在 Mac 和 Linux 上),然后键入以下命令。在 Windows 上,您可以使用像 Putty 这样的 SSH 客户端。

Windows用户安装SSH客户端:

如果您使用的是windows,你需要在电脑上安装PuTTY这样的SSH客户端,或者百度安装。

下载完成之后,打开PuTTY,然后在session中的“Host Name”中输入树莓派的IP地址,然后点击"open",即可连接树莓派了。

20221117163716

第一次你会看到一个警告,点击 Accept 按钮。

20221117163722

提示输入登录用户名: pi

输入密码(默认为:raspberry )

现在,输入密码并按回车键。

20221117163732

通过SSH登录成功。

Mac和Linux用户:

在这里,使用您在上一步中找到的 IP 地址。

ssh pi@192.168.x.x

注意:确保您的 Raspberry Pi 和您用于通过 SSH 连接到 Raspberry Pi 的计算机连接到同一网络。

20221117163740

通过终端SSH

第一次你会看到一个警告,输入 yes 并按回车键。

20221117163746

输入密码(默认为‘raspberry’)

现在,输入密码并按回车键。

20221117163755

通过SSH登录成功

成功登录后,您将看到 Raspberry Pi 的终端。现在,您可以通过此终端远程(在当前网络内)在您的 Raspberry Pi 上执行任何命令,而无需物理访问您的 Raspberry Pi。

步骤 4. 在任何地点访问家中的树莓派

仅在家中同一局域网络访问树莓派有局限性,且一旦树莓派在家中的IP变化,如果有一天我们想在办公室的位置想访问树莓派怎么办?那我们现在就解决。

4.1 安装 Cpolar内网穿透

cpolar是一款内网穿透工具,可以将您的内网站点暴露到公网上,使所有人可以访问到你的站点。也可以TCP的方式将您的ssh端口映射到公网地址端口上。

cpolar官网:https://www.cpolar.com/

  • cpolar一键安装脚本:(国内用户)
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 或短链接安装方式:(国外用户)
curl -sL https://git.io/cpolar | sudo bash
  • 查看cpolar版本信息
cpolar version

如果正常显示,则安装成功,如图:

20221117163818

4.2 cpolar进行token认证

如果您还没有cpolar账号,请去cpolar官网注册并登录后台获取认证token

cpolar authtoken xxxxxxxxxxxxxxxxxx

4.3 配置cpolar服务开机自启动

  • 配置cpolar开机自启动
sudo systemctl enable cpolar
  • 守护进程方式,启动cpolar
sudo systemctl start cpolar
  • 查看cpolar守护进程状态
sudo systemctl status cpolar

20221117163830

如图,状态为active, 说明启动状态成功

cpolar会默认安装两个样例隧道,一个是Website隧道指向http 8080端口,一个是ssh隧道,指向tcp 22端口。

4.4 查看映射到公网的隧道地址

我们登录cpolar后台–>状态,查看一下ssh隧道映射的公网地址:

20221117163837

4.5 ssh公网远程访问树莓派

ssh 用户名@1.tcp.vip.cpolar.cn -p XXXXX(X为cpolar生成的端口号,用户名替换为主机用户名)

如:

ssh pi@1.tcp.vip.cpolar.cn -p 20013

由于我们的本地22端口到了公网被映射到了20013端口,所以,ssh命令需要加-p参数,后面加公网隧道端口号

20221117163844

登录成功了!现在,您可以在家里,或者学校,或者办公室,手机4G终端网络任意地方访问您的树莓派!

4.6 修改树莓派默认密码(可选)

上文提到,默认密码是不安全的,尤其是您将树莓派暴露在公网地址之上时,建议修改密码

passwd

20221117163851

系统提示输入当前密码,(默认为‘raspberry’) 然后重复输入新密码,即可。

此外,您还可以设置 SSH 密钥,这样您就不必每次通过 SSH 登录时都输入密码,但那是完全不同的主题。

步骤 5. 为SSH远程树莓派配置固定公网地址

以上教程,我们使用了免费的cpolar创建安全隧道实现公网ssh远程树莓派,但是免费隧道所生成的公网地址是临时随机的,会在24小时内随机变化,为了方便长期远程,我们接下来将这个公网地址配置成固定的,同时提高带宽。

首先,登录您的cpolar后台,在cpolar后台->预留-> 保留TCP地址位置,添加一条记录。

20221117164019

地区选择China VIP,和填写描述,然后点击保留按钮。

系统会分配给您一个该地区的固定TCP地址,可供长期稳定使用。

20221117164025

在调用 cpolar 时使用-remote-addr选项参数,值为系统分配给您的保留 TCP 地址。

命令行使用举例:

  • 将后台预留的TCP地址绑定到本地SSH端口
cpolar tcp -remote-addr=1.tcp.vip.cpolar.cn:20046 22

修改cpolar配置文件

在树莓派中,修改cpolar配置文件,在ssh隧道下,添加remote_addr参数

nano /usr/local/etc/cpolar/cpolar.yml

20221117164033

注意:配置文件中的remote_addr参数为下划线,与命令行中使用的-remote-addr中划线不同。

修改完保存退出。

  • 测试配置文件,我们在前台单独启动隧道文件,测试一下
cpolar start ssh

20221117164040

如上图,已经主明已经启动了固定TCP端口隧道,与我们在后台获得得隧道地址一致。

CTRL+C退出。

  • 重新启动cpolar服务,使ssh隧道在后台生效。
sudo systemctl restart cpolar
  • 使用公网地址连接SSH测试
ssh pi@1.tcp.vip.cpolar.cn -p 20046

注意:由于公网端口变成20046,所以请求时,ssh命令要加上-p参数, 值为指定的cpolar公网端口号。

windows用户修改ssh客户端的默认端口为cpolar的公网端口即可。

总结:

现在,我们每次远程连接树莓派时,不必每次修改远程ssh连接地址了,效率进一步提升。

转载自cpolar极点云的文章:无公网IP,从公网SSH远程访问家中的树莓派

相关文章:

无公网IP,公网SSH远程访问家中的树莓派教程

文章目录 前言 如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar内网穿透4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地…...

「UG/NX」Block UI 超级截面SuperSection

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#...

高层建筑全景vr火灾隐患排查模拟培训软件助力群众防范火灾伤害

随着城市化进程的加快,楼宇建筑的数量也在不断增加。然而,楼宇消防安全问题也日益突出。为了提高楼宇员工和居民的消防安全意识,楼宇VR消防安全教育培训应运而生。VR安全培训公司深圳华锐视点制作的楼宇vr消防安全教育培训,包括消…...

【WPF】 本地化的最佳做法

【WPF】 本地化的最佳做法 资源文件英文资源文件 en-US.xaml中文资源文件 zh-CN.xaml 资源使用App.xaml主界面布局cs代码 App.config辅助类语言切换操作类资源 binding 解析类 实现效果 应用程序本地化有很多种方式,选择合适的才是最好的。这里只讨论一种方式&#…...

VS2017编译同事VS2022创建的库,报错无法运行rc.exe

项目场景: 项目场景:有一个qt的版本,迁移到VS中进行开发编译,同事使用的是VS2022已经编译成功。但是拷贝到我电脑,我使用VS2017打开编译,却报错:报错无法运行rc.exe。 原因分析: 1.…...

Leetcode49. 字母异位词分组

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 解题思路:计数 思路:题意是字符串的字符都是小写,可以对每个字符串统计其中字符的…...

设计模式之工厂方法模式(FactoryMethod)

一、概述 定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 二、适用性 1.当一个类不知道它所必须创建的对象的类的时候。 2.当一个类希望由它的子类来指定它所创建的对象的时候。 3.当类将创建对象的职责委…...

python的进度条tqdm库,显示时进度条不换行设置

问题描述 tqdm库,显示时进度条不要换行,直接在一行里显示当前进度 换行显示: 不换行显示 解决方案(参考链接) 添加参数position0 和 leaveTrue 举例: 修改前: import tqdm import time f…...

spark的使用

spark的使用 spark是一款分布式的计算框架,用于调度成百上千的服务器集群。 安装pyspark # os.environ[PYSPARK_PYTHON]解析器路径 pyspark_python配置解析器路径 import os os.environ[PYSPARK_PYTHON]"D:/dev/python/python3.11.4/python.exe"pip inst…...

力扣:66. 加一(Python3)

题目: 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 来源:力扣&#xf…...

Go的标准库Context理解

作为一个才入门的菜鸟,还没写过真正的 go 项目,要理解这个 Context 还是有点难,不过还是要尝试一下。在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端…...

Nuxt3_1_路由+页面+组件+资源+样式 使用及实例

1、 简介 1.1 开发必备 node版本 v16.10.0 我使用的是16.14.0编辑器推荐使用Volar Extension 的VS code插件Terminal 运行nuxt指令 1.2 环境搭建 安装项目: npx nuxilatest init [first_nuxt3]进入项目目录: cd [first_nuxt3]安装依赖:n…...

Kafka第三课

Flume 由三部分 Source Channel Sink 可以通过配置拦截器和Channel选择器,来实现对数据的分流, 可以通过对channel的2个存储容量的的设置,来实现对流速的控制 Kafka 同样由三大部分组成 生产者 服务器 消费者 生产者负责发送数据给服务器 服务器存储数据 消费者通过从服务器取…...

elasticsearch修改es集群的索引副本数量

前言 最近es集群进行调整,从2节点变成了单节点。所以需要将集群模式改为单点模式,并需要将es 集群的全部索引副本个数改为0,不然会有很多未分配的分片,导致集群状态为 yellow。 具体实践 1. 先将现有的index的副本数量为0个 此…...

【SpringCloud】Ribbon定制化配置

文章目录 使用Ribbon自带负载均衡算法添加负载均衡算法ConfigurationRestTemplate使用上面负载均衡算法 自定义负载均衡算法负载均衡算法实现RestTemplate在Controller中使用该负载均衡算法ServiceIInstance解释 使用Ribbon自带负载均衡算法 添加负载均衡算法Configuration /…...

Mac terminal 每次打开都要重新配置文件

1. 问题描述 每次打开 Terminal,base_profile文件中配置的内容就不生效,需要重新执行source ~/.bash_profile才可以使用。 2. 原因分析 zsh加载的是~/.zshrc文件,而.zshrc 文件中并没有定义任务环境变量。 3. 解决办法 在~/.zshrc文件末尾添…...

el-button实现按钮,鼠标移入显示,移出隐藏

2023.8.18今天我学习了 如何实现鼠标移入显示按钮,鼠标移出隐藏按钮。 效果如图: 鼠标移入时: 鼠标移出时: mouseover //鼠标移入事件 mouseleave //鼠标移出事件 原本我是想直接在el-button写入这两个方法,但是elem…...

uniapp+uview封装小程序请求

提要: uniapp项目引入uview库 此步骤不再阐述 1.创建环境文件 env.js: let BASE_URL;if (process.env.NODE_ENV development) {// 开发环境BASE_URL 请求地址; } else {// 生产环境BASE_URL 请求地址; }export default BASE_URL; 2.创建请求文件 该…...

idea常见错误大全之:解决全局搜索失效+搜索条件失效(条件为空)+F8失灵

问题一:全局搜索快捷键ctrlshiftf 突然失灵了,键盘敲烂了 都没反应,这是为什么呢? 肯定不是idea本身的原因,那么就是其它外在因素影响到了idea的快捷键,那么其它的快捷键为什么没失效呢,原因只有…...

【论文阅读】基于深度学习的时序预测——LTSF-Linear

系列文章链接 论文一:2020 Informer:长时序数据预测 论文二:2021 Autoformer:长序列数据预测 论文三:2022 FEDformer:长序列数据预测 论文四:2022 Non-Stationary Transformers:非平…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

条件运算符

C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键&#xff…...

flow_controllers

关键点: 流控制器类型: 同步(Sync):发布操作会阻塞,直到数据被确认发送。异步(Async):发布操作非阻塞,数据发送由后台线程处理。纯同步(PureSync…...

node.js的初步学习

那什么是node.js呢? 和JavaScript又是什么关系呢? node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说, 需要在node.js的环境上进行当JavaScript作为前端开发语言来说,需要在浏览器的环境上进行 Node.js 可…...

前端工具库lodash与lodash-es区别详解

lodash 和 lodash-es 是同一工具库的两个不同版本,核心功能完全一致,主要区别在于模块化格式和优化方式,适合不同的开发环境。以下是详细对比: 1. 模块化格式 lodash 使用 CommonJS 模块格式(require/module.exports&a…...