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

远程手机搭建Termux环境,并通过ssh连接Termux

背景

  • Termux只能通过鼠标点击,无法使用电脑键盘,输入速度很慢,你想通过ssh 连接Termux,获得友好体验
  • 搞了个云手机,想像普通手机那样充当服务器
  • 想把自己的手机公开到局域网中供同事调试
  • 想把自己的模拟器公开到局域网中供同事调试

step 1 搞一台云手机

先搞到一台云手机(也就是在线云机,远程云手机,云测手机),这些云手机通常都是跑在服务端的模拟器(也有真机)

step2 配置Termux

  • 进入云机,安装Termux
  • 打开Termux 安装sshd,命令pkg install openssh
  • 生成ssh密钥,命令 ssh-keygen -A
  • 执行whoami
  • 设置登录密码,命令 passwd,按提示输入
  • 启动sshd服务,命令 sshd

至此,你的Termux控制台应该已经成功的启动了sshd服务,它运行的默认端口是:8022,不是通常的22端口

step 3 怎么连接到云机内网的Termux开启的ssh服务

完成setp2后,你会突然发现一个问题,这些云手机通常都不具备公网ip,她们位于服务器电脑的虚拟机中,所以,你无法直接通过公网连接到Termux。

怎么办?

关键点在于,既然我们能访问到处于内网的云机,所以,它必定和出网口机器存在通信。

这个通信方式通常是类似这样的实现:

  • 云机模拟器所有网络请求走到服务器电脑上,服务器电脑代为发送
  • 服务器电脑收到的所有网络请求,属于模拟器的,进行转发

这种技术,通常有端口转发、虚拟网卡等。

这时候,咦!你发现了哗点

  • 那我去服务器电脑上,设置端口转发到云机模拟器系统的Termux 的ssh服务不就好了?

  • 是的,你可以这么做,包括个人电脑上的模拟器,你也可以这么进行操作,从而开放到局域网、公网上,使大家都可以访问到!

  • 然后你发现,你登录不到服务器对应的电脑(通常云机服务商,不会直接提供服务器登录),所以你颓然了。

但其实,获取还有一个办法

那就是adb调试

step 4 Adb的妙用

adb 是一个安卓开发工具,是安卓调试桥的缩写。它实现了一个通信协议(socket实现),能够连接到手机中,进行apk安装,发送系统广播,执行命令等,许多投屏软件如scrcpy、乃至云手机厂商等就是通过这个方式来投屏或传输信息以及前后台通信……

等等,执行命令,你突然一个鸡灵!如果,如果,能够连接adb,那这不就是任意命令执行权限了吗?而且云机通常开启了root,这……

是的,没错,具备adb连接方法的云手机,就是这么狂,就是这么猛,可以执行任意命令。

所以,你可以通过adb命令执行端口转发,将个人本机电脑的某个端口和云手机模拟器系统的8022端口关联起来,不需要登录到服务器电脑进行操作,adb帮你操作了。

step 5 如何获取adb调试地址

如果你是远程云机:

  • 连接进入云手机。获取到云机的adb远程调试地址(部分云测厂商提供)
  • 未提供的尝试抓包,看是否存在一个一直在交换数据的socket连接,然后获取到连接地址

如果你是本地真机:

  • usb连接电脑,开启开发者调试模式
  • adb devices

step6 ADB转发本机电脑端口上的网络请求到云手机内网端口8022

你得到了一个adb公网连接地址,如18.23.22.37:3200

  • adb 连接云机,命令:adb connect 18.23.22.37:3200
  • adb 转发本机端口8021到云机端口8022,adb -s 18.23.22.37:3200 forword tcp:8021 tcp:8022,如果你只连接了一个设备,可以省略-s 18.23.22.37:3200 ,否则不能忽略,因为adb不知道你要对那个设备进行操作
  • 打开你的ssh连接工具,你可以登录到Termux了

连接地址:127.0.0.1(因为转发到自己的电脑上了)
端口:8021 (执行命令时设置的转发端口,不一定是8022)
用户:去Termux上执行命令获取:whoami

使用命令行登录:ssh -X 用户@127.0.0.1:8021

大功告成,贴图
在这里插入图片描述

step7 狗尾续貂

远程云机都成功公开出去了,真机、模拟器还不简单?

对于模拟器:

  • 一般市面上的模拟器启动的时候,会自行占用一个端口,将本机电脑某个端口转发到模拟器端口
  • 电脑开启防火墙

也有的模拟器不需要转发,它已经开启了wifi调式。
判断标准是,adb device,带有ip地址的一般可以直接连接了。
不带ip地址的,需要寻找其端口。如android官方的模拟器,一般叫做emulator-5554,那么其端口就是5555,电脑转发127.0.0.1:xxx端口到这个端口就行

对于真机:

  • 打开调式模式连接到电脑
  • 同样adb设置转发到真机
  • 电脑开启防火墙,让外部请求进入电脑,局域网or公网的兄弟就能访问到你的手机了

当然,也可以不进行转发,因为通过wifi调式,真机在局域网内也是可以通信的:
adb -s 设备id tcpip 6666

其他人电脑上执行:
adb connect 手机pi:6666

然后其他兄弟就可以连接到你手机上进行apk调式,安装termux,最后ssh连接了

相关文章:

远程手机搭建Termux环境,并通过ssh连接Termux

背景 Termux只能通过鼠标点击,无法使用电脑键盘,输入速度很慢,你想通过ssh 连接Termux,获得友好体验搞了个云手机,想像普通手机那样充当服务器想把自己的手机公开到局域网中供同事调试想把自己的模拟器公开到局域网中…...

基于EdgeWorkers的边缘应用如何进行单元测试?

随着各行各业数字化转型的持续深入,越来越多企业开始选择将一些应用程序放在距离最终用户更近的边缘位置来运行,借此降低延迟,提高应用程序响应速度,打造更出色的用户体验。 相比传统集中部署和运行的方式,这种边缘应…...

【linux】校招中的“熟悉linux操作系统”一般是指达到什么程度?

这样,你先在网上找一套完整openssh升级方案(不是yum或apt的,要源码安装的),然后在虚拟机上反复安装测试,直到把他理解了、背下来。 面试的时候让你简单说说linux命令什么的,你就直接把这个方案…...

【CSS系列】常用容易忽略的css

user-select user-select 是一个 CSS 属性,用于控制用户是否可以选择文本。通过设置 user-select 的值,可以决定用户是否可以选择元素中的文本,以及如何选择文本。 auto:默认值。浏览器可以选择文本。none:用户不能选…...

Java 数据结构 二叉树(二)红黑树

目录 数据结构图-树 简介 规则 旋转 重新着色 红黑树构建过程 前言-与正文无关 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们往往容易陷入工作的漩涡,忘记了停下脚步&#xf…...

React18-完成弹窗封装

弹框封装 用法 // 创建 userRef.current?.open(create) // 修改 userRef.current?.open(edit,values){/* 创建用户 */} <CreateUser mRef{userRef} update{} />组件暴露open方法 文档地址&#xff1a;https://react.dev/reference/react/useImperativeHandle useIm…...

蓝桥杯2024/1/31-----底层测试模板

和之前一样建好工程文件夹&#xff0c;里边包含User&#xff08;放工程文件&#xff0c;mian.c&#xff09;、Driver&#xff08;存放底层文件如Led.c&#xff0c;Led.h等&#xff09; 新建的工程先搭建框架&#xff0c;可以先书写底层函数&#xff08;此次书写了四个函数并包含…...

蓝桥杯备战(AcWing算法基础课)-高精度-乘-低精度

目录 前言 1 题目描述 2 分析 2.1 关键代码 2.2 关键代码分析 3 代码 前言 详细的代码里面有自己的理解注释 1 题目描述 给定两个非负整数&#xff08;不含前导 00&#xff09; A 和 B&#xff0c;请你计算 AB 的值。 输入格式 共两行&#xff0c;第一行包含整数 A&a…...

C++设计模式-里氏替换原则

里氏替换原则定义了继承规范。&#xff08;封装、继承、多态&#xff09; 定义1&#xff1a;类型S对象o1&#xff0c;类型T对象o2&#xff0c;o1换成o2时程序意图不变&#xff0c;那么S是T的子类。 定义2&#xff1a;使用子类不破坏父类的意图。 注意&#xff1a;如果子类不…...

compose LazyColumn + items没有自动刷新问题

val dataLists by remember { mutableStateOf(datas) } 数据更改后列表不刷新问题。 val dataLists by remember { mutableStateOf(datas) } LazyColumn(modifier Modifier.padding(top 5.dp)) {items(dataLists) {....}} 可以将mutableStateOf 改为mutableStateListOf解决…...

Java八大常用排序算法

1冒泡排序 对于冒泡排序相信我们都比较熟悉了&#xff0c;其核心思想就是相邻元素两两比较&#xff0c;把较大的元素放到后面&#xff0c;在一轮比较完成之后&#xff0c;最大的元素就位于最后一个位置了&#xff0c;就好像是气泡&#xff0c;慢慢的浮出了水面一样 Jave 实现 …...

编程笔记 html5cssjs 075 Javascript 常量和变量

编程笔记 html5&css&js 075 Javascript 常量和变量 一、JavaScript 变量二、JavaScript 常量三、示例&#xff1a;小结&#xff1a; 在JavaScript中&#xff0c;变量和常量是用来存储数据的占位符。它们的主要区别在于可变性&#xff1a;变量的值可以改变&#xff0c;而…...

题目 1159: 偶数求和

题目描述: 有一个长度为n(n<100)的数列&#xff0c;该数列定义为从2开始的递增有序偶数&#xff08;公差为2的等差数列&#xff09;&#xff0c;现在要求你按照顺序每m个数求出一个平均值&#xff0c;如果最后不足m个&#xff0c;则以实际数量求平均值。编程输出该平均值序…...

呼吸灯--FPGA

目录 1.breath_led.v 2.tb_breath_led.v 呼吸灯就是从完全熄灭到完全点亮&#xff0c;再从完全点亮到完全熄灭。具体就是通过控制PWM的占空比控制亮灭程度。 绘制PWM波的步骤就是&#xff0c;首先灯是在第一个时钟周期保持高电平熄灭状态&#xff0c;在第二个时钟周期保持1/1…...

MySQL数据库①_MySQL入门(概念+使用)

目录 1. 数据库的概念 1.1 数据库的存储介质 1.2 主流数据库 2. MySQL的基本使用 2.1 链接数据库 2.2 服务器管理 2.3 数据库&#xff0c;服务器和表关系 2.4 简单MySQL语句 3. MySQL架构 4. SQL分类 5. 存储引擎 本篇完。 1. 数据库的概念 数据库是按照数据结构来…...

虚幻UE 特效-Niagara特效实战-魔法阵

回顾Niagara特效基础知识&#xff1a;虚幻UE 特效-Niagara特效初识 其他四篇实战&#xff1a;UE 特效-Niagara特效实战-烟雾、喷泉、 虚幻UE 特效-Niagara特效实战-火焰、烛火、 虚幻UE 特效-Niagara特效实战-雨天、 虚幻UE 特效-Niagara特效实战-眩晕。 本篇笔记记录了使用空模…...

Qt多语言翻译

Qt多语言翻译概述 Qt提供了非常简单易用的多语言翻译机制&#xff0c;其核心类为QTranslator.概括来说就是利用Qt的lupdate工具将项目中所有tr函数包裹的字符串提取到.ts文件中&#xff0c;然后使用Qt Linguist由专门的翻译人员对提取的.ts文件进行逐个单词短语的翻译工作. 翻译…...

Latex学习记录

目录 1.Latex各种箭头符号总结 2.[Latex]公式编辑&#xff0c;编号、对齐 3.Latex公式编号: 多行公式多编号&#xff0c;多行公式单编号 4.LaTex中输入空格以及换行 1.Latex各种箭头符号总结 箭头符号 - ➚ (piliapp.com)https://cn.piliapp.com/symbol/arrow/Latex各种箭头…...

你在做绩效考核,还是绩效管理?二者有什么区别

绩效考核&#xff0c;为什么99%都失败&#xff0c;最后一地鸡毛&#xff1f;败在指标&#xff01; 绩效管理&#xff0c;为什么大多数企业都能成功&#xff0c;而且越做越好&#xff1f;成在目标&#xff01; 丢掉层层指标&#xff0c;人人制定目标&#xff0c;这是企业重新定…...

ele-h5项目使用vue3+vite+vant4开发:第四节、业务组件-SearchView组件开发

需求分析 展示切换动画搜索框输入文字&#xff0c;自动发送请求搜索结果展示搜索状态维护历史搜索展示&#xff0c;点击历史搜索后发送请求历史搜索更多切换动画效果 <script setup lang"ts"> import OpSearch from /components/OpSearch.vue import { ref } f…...

CoPaw复杂逻辑推理与数学解题能力极限测试

CoPaw复杂逻辑推理与数学解题能力极限测试 1. 开场&#xff1a;挑战AI的认知边界 今天我们要做一个有趣的实验——对CoPaw进行一场高强度的逻辑与数学能力压力测试。就像给运动员做极限体能测试一样&#xff0c;我们将用一系列高难度题目来检验这个AI模型的推理能力边界。 测…...

Qwen3.5-9B-AWQ-4bit LSTM时间序列预测模型原理与调参详解

Qwen3.5-9B-AWQ-4bit LSTM时间序列预测模型原理与调参详解 1. 引言&#xff1a;当LSTM遇见大语言模型 时间序列预测一直是机器学习领域的经典问题。从股票价格预测到电力负荷分析&#xff0c;传统LSTM模型因其出色的序列建模能力而广受欢迎。但随着大语言模型(LLM)的崛起&…...

高性能队列Disruptor:从原理到实战的完整指南

高性能队列Disruptor&#xff1a;从原理到实战的完整指南 【免费下载链接】blog_demos CSDN博客专家程序员欣宸的github&#xff0c;这里有六百多篇原创文章的详细分类和汇总&#xff0c;以及对应的源码&#xff0c;内容涉及Java、Docker、Kubernetes、DevOPS等方面 项目地址…...

Highlight.js在Vue3中的性能优化指南:按需加载 vs 全量引入

Highlight.js在Vue3中的性能优化实战&#xff1a;从全量引入到精准加载 当你的Vue3项目需要展示代码片段时&#xff0c;Highlight.js无疑是语法高亮的首选方案。但在大型应用中&#xff0c;直接全量引入这个强大的工具可能会让你的打包体积意外膨胀——完整的Highlight.js包含超…...

阿里开源万物识别镜像实战:3步完成图片识别环境配置与调用

阿里开源万物识别镜像实战&#xff1a;3步完成图片识别环境配置与调用 1. 引言&#xff1a;让图片识别变得简单 想象一下&#xff0c;你刚拍了一张照片&#xff0c;里面有各种物品&#xff1a;手机、水杯、笔记本电脑、宠物狗...如果有一个工具能自动识别出照片里的所有物体&…...

SGLang-v0.5.6应用教程:快速构建API服务,支持约束解码生成指定格式

SGLang-v0.5.6应用教程&#xff1a;快速构建API服务&#xff0c;支持约束解码生成指定格式 1. SGLang简介与核心能力 SGLang&#xff08;Structured Generation Language&#xff09;是一个专注于大模型推理优化的高性能框架。它通过创新的架构设计&#xff0c;有效解决了传统…...

课堂学习1

Miniconda 安装教程 (2026版) Anaconda 是最流行的 Python 和 R 语言数据科学平台&#xff0c;它包含了康达包管理器&#xff08;Conda&#xff09;、Python 以及 1500 个科学包及其依赖项。&#xfeff;Miniconda 可以看作是 Anaconda 的“轻装版”&#xff0c;只自带 conda …...

药流和人流哪个恢复快?术后修护行业洞察与实用指南

意外怀孕后&#xff0c;药流和人流的恢复差异及术后修护&#xff0c;是女性关注的核心话题&#xff0c;也是孕产修护领域的重点议题。术后修护作为缩短恢复周期、减少并发症的关键&#xff0c;其科学合理性直接影响女性生殖健康。本文结合行业现状与实用经验&#xff0c;探讨药…...

玉米脱粒机的毕业设计(论文+12张CAD图纸+开题报告+任务书……)

玉米脱粒机作为农业机械化的重要设备&#xff0c;其核心作用在于通过机械结构与动力系统的协同&#xff0c;实现玉米果穗与籽粒的高效分离。传统人工脱粒效率低、劳动强度大&#xff0c;而机械化脱粒通过旋转滚筒与筛网的配合&#xff0c;可显著提升处理速度&#xff0c;同时降…...

2025届毕业生推荐的五大降AI率方案解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能写作工具&#xff0c;是借助自然语言处理以及深度学习技术制造的智能辅助系统&#…...