用腾讯云服务器实现ipad连接远程电脑桌面record(详细)(含稳定连接方法)

这几天想用ipad连接电脑试一下,这样上课的时候就不用搬抬这么重的臭屁电脑了,于是开始尝试了几种方法,一开始先开通了windows专业版,想用学校机房电脑测试一下,结果不行,后面还是打算研究在ipad上如何使用,这样就可以方便携带了,2023.2.22刚入手了益博斯键盘和向日葵的鼠标,准备尝试一下,用几天,不行就退掉准备入二手轻薄本了。

玩了一周,最后还是用了cygwin下的autossh才能实现足够稳定的连接,吐血了要

提前说明这里后面的教程需要有些许基础的linux知识。

这里给出内容大纲

1. 使用软件连接

这里推荐使用向日葵,直接用就可以了,当然还有类似teamviwer之类的软件。

不过这类软件的原理是直接投屏。

那免费版肯定就是会画面卡一点,服务器资源肯定给氪金用户的了,不过目前对比起来感觉和rd-client也差不了多少。

并且投屏的另一个缺点就是你的电脑会跟着一起点亮屏幕,然后你在ipad做什么别人都能看到你的电脑上也在干这个,所以就稍微隐私性差一点,当然如果你电脑放家里也没啥,只不过我电脑一般放在实验室,emm就有不太好吧。

2. 使用windows自带远程

使用这个呢网上也有很多相关教程了,这里着重推荐这个,他写的好到以至于我都不好意思写了,感觉像是再写一遍。

从任何地方远程桌面连接到家里的电脑 - 知乎 (zhihu.com)

2.1 需要准备的
  • windows专业版

首先是需要被连接的那个电脑是专业版,不过专业版得800多,所以没有预算的可以去破解,这里的话推荐搜heu kms,一个软件,很方便升级到专业版。

  • 一台云服务器以及一点linxu知识
2.2 开启远程桌面

有了专业版之后就可以开启远程桌面了,这里可以在控制面板找到开启,win10也可以直接在设置里面找

image-20230223001144799

这里直接搜远程就可以选择了,

image-20230223001824698

在选择用户那里可以看到自己电脑的用户名(这个有时候很多人会弄错)

3. link start!

3.1电脑端连接

电脑端连接不需要本电脑是专业版,window电脑本身自带远程桌面连接,输入好正确的ip地址就可以了。

获取ip地址的方法可以在控制台输入ipconfig

找到下面这里的ip地址

img这里引用了知乎的用户的

3.2 ipad设备

这里我就不提供其他操作系统的了,有兴趣的人可以去搜下。

这里连接方法本质上是和电脑端类似的,因为我们用的是RD-client,是微软官方退出的连接客户端,

也许在APP-Store上面搜到的不叫这个名字,也不是很多人用,但是就是相关度最高那个,下载完之后,名字就是rd-client。

这里的连接也是比较简单的,输入id即可

连接失败原因

原因有很多种

  • 比如可能用户名弄错了,密码一般是我们登录微软账号的那个,不要输pin的。

  • 可以把那个”仅限网络身份级别连接的勾选“给去掉尝试一下。

  • ip地址也要注意不要写错,比如我们的校园网的ip地址每天都会变的。

注意了,以上的方法都是只能在同一个局域网下使用的,例如校园网,那这个时候就有人不满了,那我都同一个局域网了,那算什么远程啊,浪费我时间吗这不。

ok为了解决这个问题,我们可以通过内网穿透的方式来实现在其他网络远程控制(但是两部设备也一样需要联网)。相信大家应该都听过这个词吧,这里就不做详细阐述了,只需要知道我们要一个有公网ip的服务器来帮忙转接端口就可以了。

3.3 通过云服务器实现内网穿透

这里用的是腾讯云服务器来做一个内网穿透。

3.3.1首先打开服务器防火墙3389端口

在云服务器控制台和宝塔(如果有的话)那里都要打开

image-20230224220507199

当然如果为了更加安全,可以不要用3389端口

3.3.2 配置免密登录

这里比较简单

首先可以在本机电脑创建ssh密钥(如果已经创建了会有提示)

ssh-keygen

成功执行后该命令会在~/.ssh文件夹下生成id_rsa文件和id_rsa.pub文件,前者是私钥,需要妥善保管防止泄露,后者是公钥,需要保存到服务器上。可以通过执行以下命令来自动将公钥上传至服务器:

 ssh-copy-id <服务器用户名>@<服务器IP>

当然如果你的电脑上没有ssh-copy-id命令,可以手动将本地的~/.ssh/id_rsa.pub文件中的内容全部追加到到服务器中的~/.ssh/authorized_keys文件后面(记得要换行哦,一行是一个不佟的ssh密钥)。

可以使用vim命令去编辑该文件,如果vim不会的话(建议去学一学,很实用,记住常用的命令即可)

可以在本地执行一下命令

 scp ~/.ssh/id_rsa.pub <服务器用户名>@<服务器IP>:~/

然后在服务器上执行以下命令:

 cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
 rm ~/id_rsa.pub

ssh尝试连接服务器时,会自动匹配~/.ssh/authorized_keys中的公钥和你的私钥,如果成功配对,则不需要输入密码就可以连接到服务器了。

如果不行的话可以往下翻阅,下面有写连接失败的原因

3.3.3 配置服务器的sshd服务

在服务器上编辑/etc/ssh/sshd_config文件,,找到#GatewayPorts no改为yes并去掉注释。

重启sshd服务

sudo systemctl restart sshd
3.3.4 被控制端ssh端口转发
 ssh -NfR <服务器IP>:<服务器Port>:<本地IP>:<本地Port> <服务器用户名>@<服务器IP>

其中:

  • 服务器IP为你的云服务器的公网IP
  • 服务器Port为之前在防火墙中打开的端口,默认为3389
  • 本地IP一般填写localhost
  • 本地Port为启用远程桌面的高级设置中指定的端口,默认为3389
  • 服务器用户名为你登陆云服务器的用户名
  • **-R**表示远程端口转发
  • **-N**表示不执行命令,只进行端口转发
  • **-f**表示将ssh放到后台执行

事实上当我们准备好所有东西后,本地电脑开机的时候我们只需要执行上述这一条命令就可以实现端口转发了,你就可以在任何有互联网的地方远程连接电脑啦!

但是ssh的连接是非常不稳定的,那么如何来解决这个问题呢。

4. 保持ssh连接稳定

这里我尝试了好几种方法,但是很多都不太成功,就在这里写下来,供大家参考,顺便看看能不能找出问题,一劳永逸的解决吧

方法1 使用电脑自带的创建计划任务来执行。(不太推荐)
(成功率不高,有的时候可能可以连接很久,有时很快就断联了)

该方法比较简单,但是不算很有效

大概方法如下

  • 找到 任务计划程序

    在这里插入图片描述

  • 创建任务

在这里插入图片描述

  • 常规如下

  • 创建触发器

在这里插入图片描述

  • 创建新的操作,参数是自己的那些ip地址

在这里插入图片描述

  • 最后是设置

在这里插入图片描述

接下来我们启动该任务就可以啦

但是,即使是这样也还是会断联,但是目前没找出是什么原因,而且wifi有时候也会断连,校园网也可能会有时把我的账号给登出去,所以emm我继续寻找其他办法。

方法2 autossh(成功率高)
  1. 配置cygwin(windows需要配置cygwin才能用autossh)

一些参考文章

在这一篇可以下载到autossh的windows版本很方便,不用安装任何程序

Windows下使用AutoSSH,并作为服务自启动(不用安装Cygwin) - h46incon - 博客园 (cnblogs.com)

这一篇是命令的解释参考

利用AutoSSH建立SSH隧道,实现内网穿透 - 知乎 (zhihu.com)

补充):

后面发现上面的那篇免cygwin安装的方法无法正常执行autossh

就是虽然命令不会报错,但是并不能连通,最后只能无奈下载cygwin

这里放上下载cygwin的文章,cygwin下载还是很方便的,主要就是下载各种插件,如果漏装了就重新运行安装程序,补充包就可以了

How to create SSH tunnel on Windows by using AutoSSH | Free Online Tutorials (tutorialspots.com)

或者中文版的文章(内容基本一致,ssh相关的插件的话其实用autossh就够了)

(153条消息) 如何在 Windows 上安装 Autossh服务_autossh windows_快乐小胡!的博客-CSDN博客

注意事项:这里呢他们两个的文章都有些地方写的不是很详细

这里补充一些

  • 用win+R进入services.msc,然后更改autossh登录信息,输入自己的账户,最后启动
  • 如果全部都弄好后发现还是无法进行ssh连接,看一下有没有在cygwin的情况下生成一个新的公钥,因为电脑本地的那个是无法让cygwin连上远程服务器的,并且生成公钥的地址也不一样(地址名字很相似)
  • 如果执行一些命令发生类似cygrunsrv: Error installing a service的错误,可能是没有以管理员权限运行。
  1. autossh命令

如果你的电脑是Linux操作系统,那么使用autossh就很简单了

首先是在自己的本地电脑上执行命令安装Autossh

yum install autossh

然后建立SSH隧道,只需要一条代码,非常的简单

autossh -M 4010 -NR 1000:localhost:2000 username@xxx.xxx.xxx.xxx (-p xxxx)


cygrunsrv -I AutoSSH -p /bin/autossh -a "-M 20000 -fNR 1000:localhost:2000 root@服务器ip" -e AUTOSSH_NTSERVICE=yes


参数解释:

  • “-M 4010”意思是使用内网主机 A 的 4010 端口监视 SSH 连接状态,连接出问题了会自动重连
  • “ -N”意思是不执行远程命令
  • “-R”意思是将远程主机(公网主机 B)的某个端口转发到本地指定机器的指定端口

代码解释:

  • “80:localhost:4000”意思是将内网主机 A 的 4000 号端口转发至公网主机 B 的 80 号端口上
  • “username@xxx.xxx.xxx.xxx”意思是公网主机 B 的用户名和 IP
  • “-p xxxx”意思是公网主机 B 的 SSH 端口,如果是默认的 22 号端口,则可以不输入.

一些注意事项

1. 登录ssh的时候permission deny

这种情况有很多,网上也有很多教程

这里列举一些比较好的

(150条消息) 【Linux】ssh设置了密钥,但ssh登陆的时候还需要输入密码_zclinux_的博客-CSDN博客_sftp密钥登陆后还需要密码

我当时总是输入密码错误,后面不记得调了什么就又可以了,应该是开了那个PermitRootLogin yes在我的文件里面默认这个是被注释掉了

  • 还有这个RSAAuthentication yes我找不到,其他基本都是正确的。

  • 或者ssh密钥已经设置好了的时候还是要密码,要去确认一下authorized_key文件到底有没有写错,记得要分行,一个ssh公钥是一行(画面显示的时候可能会因为屏幕不够长换成多行)

  • Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password

    如果是提示这个的时候呢,其实可能就真的是公钥出问题啦,记得要去看一下,当然也可以上网搜其他方法

2. 电脑无法成功连接
  • 比如可能用户名弄错了,密码一般是我们登录微软账号的那个,不要输pin的。

  • 可以把那个”仅限网络身份级别连接的勾选“给去掉尝试一下。

  • ip地址也要注意不要写错,比如我们的校园网的ip地址每天都会变的。(如果做了内网穿透就不会变)

  • 如果有用宝塔页面,则记得也要去宝塔那里开启3389的端口,否则也是无法远程连接的

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常感谢您的提问!以下是一个基于 Ext JS 6 的连接电脑摄像头实现拍照保存录像功能示例: ``` // create video element var videoElement = Ext.create('Ext.dom.Element', { tag: 'video', width: 480, height: 320 }); // add video element to panel var panel = Ext.create('Ext.panel.Panel', { title: 'Camera', items: [videoElement], buttons: [ { text: 'Take Photo', handler: function() { // create canvas element var canvasElement = Ext.create('Ext.dom.Element', { tag: 'canvas', width: videoElement.getWidth(), height: videoElement.getHeight() }); // draw video frame on canvas canvasElement.dom.getContext('2d').drawImage(videoElement.dom, 0, 0, videoElement.getWidth(), videoElement.getHeight()); // save canvas as image Ext.ux.saveAs({ data: canvasElement.dom.toDataURL(), filename: 'photo.png' }); } }, { text: 'Record Video', handler: function() { // create media stream navigator.mediaDevices.getUserMedia({ video: true }).then(function(stream) { // play media stream on video element videoElement.dom.srcObject = stream; videoElement.dom.play(); // start recording var mediaRecorder = new MediaRecorder(stream); var chunks = []; mediaRecorder.ondataavailable = function(event) { chunks.push(event.data); }; mediaRecorder.onstop = function() { // save video as blob var blob = new Blob(chunks, { type: 'video/mp4' }); Ext.ux.saveAs({ data: URL.createObjectURL(blob), filename: 'video.mp4' }); }; mediaRecorder.start(); }).catch(function(error) { console.error(error); }); } } ] }); Ext.create('Ext.container.Viewport', { layout: 'fit', items: [panel] }); ``` 希望这个示例对您有所帮助!如果您还有其他问题或需要更多帮助,请随时联系我。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值