小米路由器开启SSH,配置阿里云ddns,开启外网访问SSH和WEB管理界面
文章目录
- 前言
- 一、开启SSH
- 二、配置阿里云ddns
- 1.准备工作
- 2.创建ddns脚本
- 3.添加定时任务
- 三、开启外网访问SSH和WEB管理界面
- 1、解除WEB管理页面访问限制
- 2.手动添加防火墙端口转发规则,开启外网访问WEB管理和SSH
前言
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、开启SSH
这里使用的是github上的开源项目XMiR-Patcher实现。
https://github.com/openwrt-xiaomi/xmir-patcher
下载项目到本地。
然后运行以下命令,需要注意的是linux或mac需要安装python3.8和openssl
- Windows
Run run.bat - Linux / Mac OS
Install python 3.8, openssl
Run run.sh
运行并输入ip和密码
先输入路由器ip-》回车-》输入2-》数据路由器密码
成功后ssh的账号密码都为root
==========================================================Xiaomi MiR Patcher1 - Set IP-address (current value: 192.168.31.1)2 - Connect to device (install exploit)3 - Read full device info4 - Create full backup5 - Install EN/RU languages6 - Install Breed bootloader7 - Install firmware (from directory "firmware")8 - {{{ Other functions }}}9 - [[ Reboot device ]]0 - ExitSelect: 192.168.31.1 #输入自己的路由器ip==========================================================Xiaomi MiR Patcher1 - Set IP-address (current value: 192.168.31.1)2 - Connect to device (install exploit)3 - Read full device info4 - Create full backup5 - Install EN/RU languages6 - Install Breed bootloader7 - Install firmware (from directory "firmware")8 - {{{ Other functions }}}9 - [[ Reboot device ]]0 - ExitSelect: 2 # 选择2 然后根据提示输入密码
二、配置阿里云ddns
小米路由器本身自带了ddns,但是局限性比较高只能用以下4种。

1.准备工作
如何想使用自己的域名,需要上阿里云购买一个域名。
注册AccessKey
首先登录个人的阿里云账号,我的是RAM账户。各位的可以使用主账户进行使用AccessKey。
点击ACCESSKEY管理
创建你的AccessKey,并记录下来。
注意如果是RAM的话一定要添加AliyunDNSFullAccess授权策略
2.创建ddns脚本
aliyun_ddns.sh
#!/bin/sh
set -e#================================================================================================================#
# 功能:用于更新阿里云域名IP,实现DDNS功能
#
# 在 http://www.gebi1.com/forum.php?mod=viewthread&tid=287344&page=1&_dsign=8f94f74c 提供的脚本文件基础上修改的。
# ghui, modified 12/2/2019
# 在 N1 debian Buster with Armbian Linux 5.3.0-aml-g12 手动执行/定时任务(crontab)执行测试通过
#================================================================================================================#
#
# 使用方法:
#
# 方法1. 外部参数
# 修改源码,将对应参数 修改为$1,$2,$3,$4,$5,$6
# aliddns.sh <aliddns_ak> <aliddns_sk> <aliddns_subdomain> <aliddns_domain> <aliddns_iptype> <aliddns_ttl>
# 示例(A 代表 IPv4,AAAA 代表 IPv6):
# 执行:aliddns.sh "xxxx" "xxx" "test" "mydomain.site" "A" 600
# 执行:aliddns.sh "xxxx" "xxx" "test" "mydomain.site" "AAAA" 600
#
# 方法2. 内部参数
# 修改源码,将$1,$2,$3,$4,$5,$6 替换为对应参数
#
# 示例:
# aliddns_ak="<aliddns_ak>"
# aliddns_sk="<aliddns_sk>"
# aliddns_subdomain="<aliddns_subdomain>"
# aliddns_domain="<aliddns_domain> "
# aliddns_iptype="<aliddns_iptype>"
# aliddns_ttl=<aliddns_ttl>
# 执行:aliddns.sh
#
#================================================================================================================##--------------------------------------------------------------
# 参数
#
# (*)阿里云 AccessKeyId
aliddns_ak="阿里云 AccessKeyId "
# (*)阿里云 AccessKeySecret
aliddns_sk="阿里云 AccessKeySecret "# (*)域名:test.mydomain.com
aliddns_subdomain="test.mydomain.com " #'test'
aliddns_domain="mydomain.com.cn" #'mydomain.com'# (*)ip地址类型:'A' 或 'AAAA',代表ipv4 和 ipv6
aliddns_iptype="A" # 'A' 或 'AAAA',代表ipv4 和 ipv6# TTL 默认10分钟 = 600秒
aliddns_ttl=600 #"600"#--------------------------------------------------------------machine_ip=""
ddns_ip=""
aliddns_record_id=""if [ "$aliddns_subdomain" = "@" ]
thenaliddns_name=$aliddns_domain
elsealiddns_name=$aliddns_subdomain.$aliddns_domain
finow=`date`
echo "**************************************************"
echo "$now"
echo "$aliddns_name"function getMachine_IPv4() { echo $(/usr/bin/wget -qO- -t1 -T2 http://ip.3322.net)
}function getMachine_IPv6() { ipv6=`ip addr | grep "inet6.*global" | grep -v "deprecated" | awk '{print $2}' | awk -F"/" '{print $1}' | sed -n '1,1p'`echo $ipv6
}function getDDNS_IP() { current_ip=`nslookup -query=$aliddns_iptype $aliddns_name | grep "Address" | grep -v "#53" | awk '{print $2}'`echo $current_ip
}function urlencode() { # urlencode <string>out=""while read -n1 cdocase $c in[a-zA-Z0-9._-]) out="$out$c" ;;*) out="$out`printf '%%%02X' "'$c"`" ;;esacdoneecho -n $out
}function enc() { echo -n "$1" | urlencode
}function send_request() { local args="AccessKeyId=$aliddns_ak&Action=$1&Format=json&$2&Version=2015-01-09"local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddns_sk&" -binary | openssl base64)curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"
}function get_recordid() { grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'
}function query_recordid() { send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddns_name&Timestamp=$timestamp&Type=$aliddns_iptype"
}function update_record() { send_request "UpdateDomainRecord" "RR=$aliddns_subdomain&RecordId=$1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=$aliddns_iptype&Value=$(enc $machine_ip)"
}function add_record() { send_request "AddDomainRecord&DomainName=$aliddns_domain" "RR=$aliddns_subdomain&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=$aliddns_iptype&Value=$(enc $machine_ip)"
}if [ "$aliddns_iptype" = 'A' ]
thenecho "ddns is IPv4."machine_ip=`echo "$(getMachine_IPv4)"`echo "machine_ip = $machine_ip"aliddns_record_id=$aliddnsipv4_record_id
elseecho "ddns is IPv6."machine_ip=`echo "$(getMachine_IPv6)"`echo "machine_ip = $machine_ip"aliddns_record_id=$aliddnsipv6_record_id
fiddns_ip=`echo "$(getDDNS_IP)"`
echo "ddns_ip = $ddns_ip"if [ "$machine_ip" = "" ]
thenecho "machine_ip is empty!"exit 0
fiif [ "$machine_ip" = "$ddns_ip" ]
thenecho "skipping\n"exit 1
fiecho "start update..."timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`if [ "$aliddns_record_id" = "" ]
thenaliddns_record_id=`query_recordid | get_recordid`echo "----------------" $aliddns_record_id "\n"if [ "$aliddns_iptype" = 'A' ]thenaliddnsipv4_record_id=$aliddns_record_idelsealiddnsipv6_record_id=$aliddns_record_idfi
fi#add support */%2A and @/%40 record
if [ "$aliddns_record_id" = "" ]
thenecho "add record starting"aliddns_record_id=`add_record | get_recordid`if [ "$aliddns_record_id" = "" ]thenecho "aliddns_record_id is empty. \n"elseif [ "$aliddns_iptype" = 'A' ]thenaliddnsipv4_record_id=$aliddns_record_idelsealiddnsipv6_record_id=$aliddns_record_idfiecho "added record $aliddns_record_id \n"fi
elseecho "update record starting"update_record $aliddns_record_idecho "updated record $aliddns_record_id \n"
fi
该脚本来自https://cloud.tencent.com/developer/article/2093275
将脚本放到/data/scripts/下命名为aliyun_ddns.sh
可以使用命令运行脚本测试是否可行
/data/scripts/aliyun_ddns.sh
3.添加定时任务
添加定时任务,每20分钟执行一次脚本
echo "*/20 * * * * /data/scripts/aliyun_ddns.sh" >> /etc/crontabs/root
/etc/init.d/cron restart
三、开启外网访问SSH和WEB管理界面
由于小米路由为了安全考虑,对WEB与防火墙规则进行限制,WEB管理、SSH只能通过内网登 陆,外网无法访问,在路由器的WEB管理页面新建端口转发中不能添加路由本机内网IP。

开启小米路由的SSH后,我们可以通过登陆SSH在命令行中手动添加防火墙中端口转发规则
1、解除WEB管理页面访问限制
- cd /etc/nginx //切换目录
- cp miwifi-webinitrd.conf miwifi-webinitrd.conf.bak //养成备份好习惯:
- vi miwifi-webinitrd.conf //编辑miwifi-webinitrd.conf
动光标找到 set $finalvar "$canproxy $isluci";

在图中位置插入下面代码(按i键进入编辑模式)
set $isluci "1";
完成后按ESC退出编辑,Shift + ;键 :输入wq 回车保存并退出

重启httpd服务使配置生效
/etc/init.d/sysapihttpd restart
如果是老版本位置在/etc/sysapihttpd/
2.手动添加防火墙端口转发规则,开启外网访问WEB管理和SSH
vi /etc/config/firewall //编辑防火墙配置
1.添加WEB管理外网端口转发规则代码段:
config redirect 'MIWEB' option src 'wan' option src_dport '1314' option name 'WEB' option ftype '1' option dest_port '80' option proto 'tcp'
WEB管理界面外网端口为1314 可通过外网IP:1314访问 (例 http://61.181.133.5:1314),绑定DDNS的用户可通过域名:1314进行访问。
2.添加SSH外网登陆端口转发规则代码段:
config redirect 'Myssh' option src 'wan' option src_dport '2345' option dest 'lan' option dest_port '22' option proto 'tcp'
SSH登陆外网端口为2345
添加对应规则后保存退出
重启防火墙使规则生效
/etc/init.d/firewall restart
现在就可以通过外网WEB管理设置小米路由和进行SSH登陆了.
相关文章:
小米路由器开启SSH,配置阿里云ddns,开启外网访问SSH和WEB管理界面
文章目录 前言一、开启SSH二、配置阿里云ddns1.准备工作2.创建ddns脚本3.添加定时任务 三、开启外网访问SSH和WEB管理界面1、解除WEB管理页面访问限制2.手动添加防火墙端口转发规则,开启外网访问WEB管理和SSH 前言 例如:随着人工智能的不断发展…...
Go快速开发框架2.6.0版本更新内容快速了解
GoFly企业版框架2.6.0版本更新内容较多,为了大家能够快速了解,本文将把更新内容列出详细讲解。本次更新一段时间以来大伙反馈的问题,并且升级后台安全认证机制,增加了RBAC权限管理及系统操作日志等提升后台数据安全性。 更新明细…...
条件语句 - if, else, switch-case
引言 条件语句是编程中用于根据不同的条件执行不同代码块的重要工具。C 提供了 if、else 和 switch-case 等条件语句,帮助程序员实现逻辑分支。本文将详细介绍这些条件语句的用法,并通过实例帮助读者更好地理解和掌握这些概念。 一、if 语句 if 语句是…...
Flink CDC MySQL 同步数据到 Kafka实践中可能遇到的问题
Flink CDC MySQL 同步数据到 Kafka实践中可能遇到的问题 一、问题场景 [ERROR] Could not execute SQL statement. Reason: org.apache.flink.table.api.ValidationException: The primary key is necessary when enable Key: scan.incremental.snapshot.enabled , default: …...
代码随想录Day51 99. 岛屿数量,99. 岛屿数量,100. 岛屿的最大面积。
1.岛屿数量深搜 卡码网题目链接(ACM模式)(opens new window) 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接…...
说说 DinoGrid Open Edition 算法生成艺术背后的故事
大约三年前,我开始创作我的第一个算法生成艺术作品。这种算法被我命名为 Montage Mosaic,通过对图片和像素的放大与缩小,尝试在作品中探索宏观与微观视界的关系。这次创作让我首次生成了一张超越 JPEG 规格限制的图片。尽管其基本实现逻辑可以…...
FFmpeg推拉流命令
命令简介 它可以将本地的视频/音频流推送到服务器,也可以将服务器上的音视频流拉到本地。 推流命令的命令格式 ffmpeg -re -i [输入文件] -c:v [视频编码器] -c:a [音频编码器] -f [输出格式] [推流地址] 参数解析 -re 表示采用实时模式,以原始速度…...
【图像处理lec10】图像压缩
目录 一、图像压缩基础 1、图像压缩的基本概念 2、数据冗余与压缩比 3、三种主要的数据冗余类型 4、保真度评估标准(Fidelity Criteria) 5、应用与实践 二、图像压缩模型 1、图像压缩模型概述 (1)压缩系统的结构 &#…...
单片机实物成品-007 汽车防盗系统(代码+硬件+论文)
汽车尾气监测系统(温度震动传感器 红外热释电GPS三个指示灯蜂鸣器正常模式防盗模式wifi传输控制送APP源码 ) 把该系统划分为两个不同设计主体,一方面为硬件控制主体,通过C语言来编码实现,以STM32开发板为核心控制器&a…...
Qt仿音乐播放器:动画类
一、基本属性 #include<QPropertyAnimation>//头文件property:性质属性 animation:动画、动画效果、动漫 QPropertyAnimation:可以对对任何QObject的子类的属性进行动画的展示;只要存在set方法 QPropertyAnimation(QObje…...
摄影构图与拍摄
摄影构图与拍摄-------------------------------------------------------------------------------------------- 画面构图------------------------------ 1.镜头感 视觉会跟着画面突出点吸引 --》引导观众视线 2.景别–》同一焦距摄像机与被摄物距离、同一摄影距离但改变镜头…...
Colyseus-monitor插件介绍
Colyseus Monitor 简介 colyseus-monitor 是 Colyseus 框架的官方插件,用于监控和管理 Colyseus 服务器的运行状态。它提供了一个基于 Web 的用户界面,使开发者能够实时查看服务器的性能指标、房间状态以及客户端连接等信息。这对于调试、优化和维护游戏服务器尤其有用。 主…...
Hive练习题11-15
11、第11题 info 表 date result 2005-05-09 win 2005-05-09 lose 2005-05-09 lose 2005-05-09 lose 2005-05-10 win 2005-05-10 lose 2005-05-10 lose 如果要生成下列结果, 该如何写sql语句? win lose 2005-05-09 2 2 2005-05-10 1 2 答案: (1) …...
Overleaf中设置表格中的字体为Times New Roman
在Overleaf中设置表格中的字体为Times New Roman 需要有这个字体包 使用 \usepackage{times} 宏包 在文档的导言区添加 \usepackage{times} 宏包,这将把整个文档的字体设置为Times New Roman,包括表格中的字体。例如:\documentclass{article} \usepackage{times} \begin{…...
模型 卡尼曼系统
系列文章 分享 模型,了解更多👉 模型_思维模型目录。直觉快思,理性慢想。 1 模型 卡尼曼系统的应用 1.1 直播购物APP中的卡尼曼系统应用案例 案例背景: 在直播购物APP中,平台通过展示单个用户的视角视频来向用户推荐…...
潇洒郎:部署Dify, 安装Ollama,Ollama下载模型,Dify配置模型
Ollama 1、安装ollama Windows版本下载:2024WindowsOllama最新0.5.4版本资源-CSDN文库, 下载速度超快,官网太慢了 双击安装,安装成功后,托盘区有Ollama图标 右键View logs打开目录 C:\Users\Administrator\AppData\Local\Oll…...
Joget研究——Joget8商业版部署
大纲 1. 环境准备1.1 安装必要软件1.2 配置Java1.3 配置MySQL数据库1.3.1 创建用户1.3.2 创建数据库 2. 下载和部署3. 启动4. 测试5. 商业版社区版对比 1. 环境准备 1.1 安装必要软件 We recommend the use of the LTS version of 11. Java 17 (LTS) is not supported at the …...
Linux下学【MySQL】表中插入和查询的进阶操作(配实操图和SQL语句通俗易懂)
绪论 每日激励:挫折是会让我们变得越来越强大的重点是我们敢于积极的面对它。—Jack叔叔 绪论: 本章是表操作的进阶篇章(没看过入门的这里是传送门,本章将带你进阶的去学习表的插入insert和查找select,本质也就是…...
从百度云网盘下载数据到矩池云网盘或者服务器内
本教程教大家如何快速将百度云网盘数据集或者模型代码文件下载到矩池云网盘或者服务器硬盘上。 本教程使用到了一个开源工具 BaiduPCS-Go,官方地址 : https://github.com/qjfoidnh/BaiduPCS-Go 这个工具可以实现“仿 Linux shell 文件处理命令的百度网…...
Vue.js 高级组件开发:抽象与高性能架构
Vue.js 高级组件开发:抽象与高性能架构 引言一、动态组件与依赖注入1. 动态组件场景 二、高可扩展性的抽象组件模式1. 设计思路2. 案例:抽象数据表组件 三、复杂场景下的异步操作管理1. 使用 Vue Composition API 管理异步逻辑 四、渲染优化与框架底层钩…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
