小米路由器开启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登陆了.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是ESC ---- 防止车辆打滑并提高驾驶时稳定性的技术

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所谓鸡汤&#xff0c;要么蛊惑你认命&#xff0c;要么怂恿你拼命&#xff0c;但都是回避问题的根源&…

LinkedList类 (链表)

目录 一. LinkedList 基本介绍 二. LinkedList 中的法及其应用 1. 添加元素 (1) add() (2) addAll() (3) addFirst() (4) addLast() 2. 删除元素 (1) remove() (2) removeAll() (3) removeFirst() (4) removeLast() 3. 遍历元素 (1) for 循环遍历 (2) for - each …

复习打卡大数据篇——Hadoop MapReduce

目录 1. MapReduce基本介绍 2. MapReduce原理 1. MapReduce基本介绍 什么是MapReduce MapReduce是一个分布式运算程序的编程框架&#xff0c;核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在Hadoop集群上。 MapRed…

Java基础知识(四) -- 面向对象(下)

1.类变量和类方法 1.1 类变量背景 有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩? 思路分析: 核心在于如何让变量count被所有对象共享 public class Child {private String name;// 定义静态变量(所有Child对象共享)public static int count 0;p…

SpringBoot中使用TraceId进行日志追踪

**查询日志的痛点&#xff1a;**项目中每当我们查询日志的时候都是看前端请求什么接口&#xff0c;根据一些关键字进入服务器查询日志中是否有这个关键字&#xff0c;然而这个关键字在日志里面并不是唯一的&#xff0c;所以要生成一个唯一的标识&#xff0c;每一次请求都是唯一…

C++类与对象上

1.面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题 例如洗衣服&#xff1a; C是基于面向对象的&#xff0c;关注的是对象&#xff0c;讲一件事拆分成不同的对象&#xff0c;靠对…

openfeign自动将Boolean默认为false

最近发现项目服务间&#xff0c;通过openfeign调用API时&#xff0c;为null的Boolean类型&#xff0c;接收端反系列化后变为false了&#xff0c;经查发现是通用组件中做了处理&#xff0c;特记录下。 主要是设置了这个 SerializerFeature.WriteNullBooleanAsFalse Bean Cond…

制造BOM的应用思考

一、制造BOM的作用 制造BOM(Manufacturing BOM,MBOM)在制造过程中的应用非常广泛,具体包括以下几个方面: 1. 生产计划和调度: 制造BOM提供了生产过程中所需的所有输入及输出间的关系,包括材料、部品的数量、结构以及制程等信息。这些信息是生产拉动物料需求计划以及成本…

向量组学习

向量组的秩及其线性组合 线性相关性 先看a1,a2 如果这两个向量不对应成比例的话,那必然内部不可能存在多余的向量,也就是无关. 主元所在的列都是独立向量 ,最大无关组就是b1,b2,b4,但这个是初等行变换后的,题目要的是A的,与之对应的就是a1,a2,a4 方程组解的结构

使用VS Code开发ThinkPHP项目

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《ThinkPHP 8高效构建Web应用 夏磊 编程与应用开发丛书 清华大学出版社》【摘要 书评 试读】- 京东图书 ThinkPHP 8开发环境安装-CSDN博客 安装ThinkPHP项目的IDE 常用的集成开发环境&#xff08;IDE&#xff09;包括P…

【WebSocket】tomcat内部处理websocket的过程

websocket请求格式 浏览器请求 GET /webfin/websocket/ HTTP/1.1。 Host: localhost。 Upgrade: websocket。 Connection: Upgrade。 Sec-WebSocket-Key: xqBt3ImNzJbYqRINxEFlkg。 Origin: http://服务器地址。 Sec-WebSocket-Version: 13。 服务器响应 HTTP/1.1 101 Swi…

软件耦合类型及相关说明

文字叙述太麻烦了&#xff0c;此内容个人觉得上图可能大家更容易接受。 ——话不多说&#xff0c;直接上图。

PL/SQL语言的并发编程

标题&#xff1a;深入探讨PL/SQL语言中的并发编程 一、引言 在数据库应用程序开发中&#xff0c;多用户同时访问和操作数据的情况非常常见&#xff0c;这就要求数据库系统具备处理并发操作的能力。而Oracle数据库的PL/SQL语言&#xff0c;以其强大的并发处理能力&#xff0c;…

TestMAX/DFT Compiler:时序单元的类型、连接顺序和后DFT优化

相关阅读 TestMAX/DFT Compilerhttps://blog.csdn.net/weixin_45791458/category_12865937.html?spm1001.2014.3001.5482 时序单元的状态 未映射的时序单元(Unmapped Sequential Cell) 在Design Compiler读取了一个RTL设计后&#xff0c;Design Compiler内置的HDL Compiler工…

8086汇编(16位汇编)学习笔记06.串操作、流程转移指令

8086汇编(16位汇编)学习笔记06.串操作、流程转移指令-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 串操作 源操作数使用si&#xff0c;默认段为DS&#xff0c;可段超越 目的操作数使用di&#xff0c;默认段为ES&#xff0c;不可段超越 串方向 串方向由D…

7-10 最长公共子序列

目录 题目描述 输入格式: 输出格式: 输入样例: 输出样例: 解题思路&#xff1a; 详细代码&#xff1a; 题目描述 给出 1~n 的两个排列 P1 和 P2&#xff0c;求它们的最长公共子序列。 n 在 5~1000 之间。 输入格式: 第一行是一个数 n 接下来两行&#xff0c;每行为 n 个数&…

TCP off-path exploits(又一个弄巧成拙的例子)

承接前面几篇文章的观点&#xff0c;本文用一个安全攻击的例子说明为了解决一个伤害很低的低概率问题&#xff0c;会引入多么大的麻烦&#xff0c;这次是可怕的被攻击 (⊙o⊙)。 TCP 端口号只有 16bit&#xff0c;序列号只有 32bit&#xff0c;这意味着在强大攻击算力面前&…

YOLO11改进-注意力-引入自调制特征聚合模块SMFA

本篇文章将介绍一个新的改进机制——SMFA&#xff08;自调制特征聚合模块&#xff09;&#xff0c;并阐述如何将其应用于YOLOv11中&#xff0c;显著提升模型性能。随着深度学习在计算机视觉中的不断进展&#xff0c;目标检测任务也在快速发展。YOLO系列模型&#xff08;You Onl…

【Spring MVC 核心概念】揭秘概念和整体架构

你有没有想过&#xff0c;当你在浏览器地址栏敲下一个 URL&#xff0c;按下回车&#xff0c;后台到底发生了什么&#xff1f;如果你用的是 Spring MVC&#xff0c;那这一切其实被精妙地拆解成了 三大块&#xff1a;Model、View 和 Controller&#xff0c;共同完成了这次的任务&…

大表:适用于结构化数据的分布式存储系统

大家觉得有意义和帮助记得及时关注和点赞!!! 译者序摘要1 引言2 数据模型 2.1 行&#xff08;Row&#xff09;2.2 Column Families&#xff08;列族&#xff09; 2.2.1 设计2.2.2 column key 的格式&#xff1a;family:qualifier2.2.3 访问控制和磁盘/内存记账&#xff08;acco…