在iPad上连接虚拟机中的ubuntu系统 - 使用frp内网穿透实现在外办公
在iPad上连接虚拟机中的ubuntu系统 - 使用frp内网穿透实现在外办公
主要参考链接:
frp内网穿透反向代理实现Windows远程桌面连接 - Shineの小破站 (geomatlab.com)
FRP 简单入门安装配置教程 - 开源免费内网穿透工具,无公网 IP 远程访问 - 异次元软件下载 (iplaysoft.com)
FRP内网穿透搭建远程桌面 - 青阳のblog-一个计算机爱好者的个人博客 (hipyt.cn)
前言
最近想要入门深度学习《动手学深度学习》 — 动手学深度学习 2.0.0-beta0 documentation (d2l.ai),于是有了在iPad上写代码的想法。起初在连接同一wifi网络的情况下,我很容易就通过ssh连接上了虚拟机中运行的ubuntu系统,但当我回到宿舍、将iPad连接上手机热点后却发现怎么也连不上系统。后来经过查阅资料了解到,不同网络的设备通过内网IP是无法直接连接的,我只好找其他办法连接上虚拟机。最后经过一番了解,我选择了通过内网穿透达到自己连接不同网络上的设备的目的。
我实现内网穿透的过程并不顺利,过程中遇到的各种问题让我决定写一篇文章来记录这段过程,希望能帮助到有和我同样需求的同学。由于我还是个刚入门的小白,所以各种问题我无法解释得非常清楚,如果文章中有不正确的地方也希望各路大佬指正。
前期准备
在iPad上安装远程终端
为了在iPad上敲代码,我们首先需要准备一个能够远程连接主机的终端。这里我使用的是广受好评的Terminus,这是一款内置付费内容的软件,而它的免费部分正好能够满足我们的使用需求。
Terminus在使用前会要求你登录账号,中国地区的苹果账号似乎无法正常登录,可以试试用境外地区的苹果账号登录(确保你能登回原来的账号)。登录之后点击软件右上角的加号就可以添加要连接的主机了。
如果你的iPad和虚拟机上的ubuntu现在处于同一网络,你就可以通过ifconfig命令来查询主机IP,然后在添加主机时将IP填入Hostname中,保存后在Host列表中选择刚才添加的主机,输入用户名和密码就可以登录到系统中啦。(如果你不想每次登录都输入用户名和密码,则可以长按列表中的主机调出选项栏,选中编辑(Edit)选项后找到用户名(Username)和密码(Password)选项,填入登录时使用到的用户名和密码并保存,之后的每次登录就都不用手动输入了)
连进主机后的界面差不多长下面这样。你可以在设置主机的页面调整界面颜色,界面颜色默认是黑色,我根据自己的喜好调整成了白色。
如果你发现连接不上主机,则可能是因为主机中没有安装ssh服务。你可以通过如下命令安装ssh服务:
#安装ssh服务器
$ sudo apt install openssh-server
在安装了ssh服务之后发现仍然连不上系统,则可能是网络设置的问题了(比如被防火墙拦截、虚拟机网络设置等,也可能是两台设备不在同一个网络),当你遇到这些问题时就需要具体问题具体解决了。
准备云服务器
由于在不同网络下无法通过内网IP直接连接两台设备(互相不可见),所以我们需要一台拥有公网IP的设备充当信使,两台设备发出的消息经由信使转交给对方,使得在不同地方的两台设备可以获知对方发出的消息。
经由推荐,我选择了阿里云的ECS共享型 n4云服务器,3年的使用年限花了将近两百大洋。起初担心1M带宽会不会出现网络卡顿,实际体验下来感觉延迟还算能接受。你可以在文章末尾找到推荐云服务器的知乎文章,可以根据自己的情况选择不同配置的服务器。
下单云服务器后我们就可以创建实例了,在创建实例镜像一栏我选择的是CentOS 7.9 64位的系统镜像。
创建完实例后我们就可以在控制台界面管理实例了(你可以在阿里云首页的右上角找到控制台),在这里我们可以查看实例的公网IP。
接着我们就可以通过公网IP远程连入云服务器系统了,不过在进行这步操作之前,我们需要点击名称上方的蓝字(✅运行中左边)进入到实例详细信息页面,然后通过重置实例密码选项设置登录root用户时所使用的密码。
设置完密码后我们就可以回到Terminus中进行操作了。我们重新添加一台主机,在Hostname一栏中填入实例的公网IP,保存后尝试连入服务器,一切顺利的话我们就可以看到连接上服务器后的终端界面了:
实现内网穿透
准备工作做完后我们就可以开始着手实现内网穿透了!首先我们需要在云服务器的系统上安装frp服务。
在云服务器上安装配置frp服务端(frps)
1. 安装frp
frp的安装包可以在对应Github仓库下的releases目录中找到,你可以在这个链接中下载到frp的最新发行版本:Releases · fatedier/frp · GitHub
这里我们根据云服务器的处理器架构选择相应的打包文件(即图中划蓝线的文件),右击文件后选择复制链接,到服务器终端里输入wget+空格并黏贴上链接,随后敲下回车键就可以开始下载安装包了
wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
这里我遇到了无法下载安装包的问题,初步分析是阿里云服务器登不上Github的原因。我的解决办法是手动下载安装包并上传至阿里云对象存储中,然后再到服务器中通过url链接下载安装包。
你可以通过以下指令直接实现这一步骤。
wget https://public-document-ferostmask.oss-cn-shenzhen.aliyuncs.com/frp_0.38.0_linux_amd64.tar.gz
#我已经把安装包上传至我的对象存储中了,你可以直接通过链接下载
下载完打包文件后我们通过tar命令对文件进行解包和移动:
tar -xzvf frp_0.38.0_linux_amd64.tar.gz #解包mv ./frp_0.38.0_linux_amd64 /usr/local/frp #移动文件至/usr/local目录下并重命名文件
cd /usr/local/frp #将工作路径改为/usr/local/frp
2. 配置文件、启动服务
工作路径切换至/usr/local/frp后我们就可以开始着手编辑配置文件了:
vim frps.ini
修改配置文件如下:
[common]
bind_port = 7000 #客户端与服务端的通信端口,默认7000,可以更改,但需要避开某些端口
dashboard_port = 7500 #仪表盘端口
dashboard_user = admin #仪表盘用户名
dashboard_pwd = 123456 #仪表盘密码
token = 12345678 #安全授权码,建议用复杂一些的授权码
保存退出,在终端里输入以下命令就可以启动frps服务了
./frps -c ./frps.ini
看到以下输出信息说明frps服务正常启动了
3. 配置安全组规则
完成以上步骤后,我们只差一步就可以通过端口访问云服务器了。
让我们回到阿里云控制台,进入实例详细信息界面点击配置安全组规则选项,接着在右边点击配置规则进入到安全组的配置界面
进入配置界面后,我们点击手动添加,在端口范围填入7000, 7001, 7500,授权对象选择0.0.0.0/0,随后点击保存。保存后端口的授权就开启了。
这时我们在浏览器地址栏中输入 - 公网IP:7500,回车后在弹窗中填入frps.ini中设置的后台用户名和密码就能访问仪表盘页面了。(确保连接到云服务器系统的终端没有退出,断开重连则需要重启frps服务才能正常连接)
在主机上安装配置frp客户端(frpc)
到这里我们已经成功一半了!接下来我们只要在主机上配置frpc服务就可以实现内网穿透了。
1. 安装frp
在ubuntu上,这一步和之前安装frp的步骤基本一致。如果你想要实现Windows远程桌面连接,则可以参考这条博文frp内网穿透反向代理实现Windows远程桌面连接 - Shineの小破站 (geomatlab.com)(注意:博文中使用的3389端口记得要安全组规则中授权)
#ubuntu上的操作
$ wget https://public-document-ferostmask.oss-cn-shenzhen.aliyuncs.com/frp_0.38.0_linux_amd64.tar.gz #下载安装包
$ tar -xzvf frp_0.38.0_linux_amd64.tar.gz #解包
$ mv ./frp_0.38.0_linux_amd64 /usr/local/frp #移动文件至/usr/local目录下并重命名文件
$ cd /usr/local/frp #将工作路径改为/usr/local/frp
2. 配置文件、启用服务
客户端的配置文件同样需要编辑:
$ vim frpc.ini
修改配置文件如下:
[common]
tls_enable = true #开启TLS服务,没有开启的话可能会遇到EOF报错
server_addr = 公网IP #填入公网IP
server_port = 7000 #与服务端的通信端口,需要与服务器配置一致
token = 12345678 #安全授权码,需要与服务端配置一致[ssh]
type = tcp #代理类型
local_ip = 127.0.0.1 #电脑在局域网中的内网IP,如果是本机可以使用127.0.0.1
local_port = 22 #远程桌面端口,默认是22
remote_port = 7001 #为内网提供给外网访问的服务端口
这里使用的服务端口记得也要在安全组配置中授权,这里使用的7001已经在之前的步骤中授权了。
修改完成后保存退出,然后使用如下命令启用frpc服务:
$ ./frpc -c ./frpc.ini
看到以上信息输出就说明frpc服务正常启动了。
此时服务端也有对应的信息输出。
使用iPad连接ubuntu系统
到这里我们已经完成大部分工作了,现在让我们重新回到Terminus:
保持云服务器的终端连接,回到主界面添加新主机。在Hostname一栏填入公网IP,下拉找到Port栏,填入我们在frpc.ini中填写的remote_port(这里我使用的是7001),点击保存。
随后我们尝试连入主机,输入用户名、密码,不出意外的话我们就进入到了ubuntu系统中了!
至此我们就可以在外通过端口连接上家中开着的主机啦。
最后的一点小工作
到这里我们已经实现了一开始的目标,只是还有些不太方便的地方需要我们处理一下。
在文中我一直强调保证连接到云服务器的终端没有关闭,这是因为我们在终端里启用进程时,进程是被囊括在会话组中的,当我们退出终端后同一会话组下的所有进程都会被关闭,也就是frps服务会被关闭,这样我们就无法让客户端与服务端建立连接了。
我们不希望每次使用内网穿透前都重新打开终端运行frps进程,所以有没有什么方法能够让内网穿透的体验好一点呢。方法是有的:
我们在云服务器系统上进行以下操作:
vim /etc/systemd/system/frps.service#创建文件
编辑文本内容如下:
[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
Restart=always
RestartSec=1min[Install]
WantedBy=multi-user.target
保存后退出,使用如下命令启动frps服务
systemctl start frps
终端无信息返回,这时我们退出连接云服务器的终端,再到主机上启用客户端,发现客户端正常运行。尝试从iPad重新连回主机,正常连接上就表示frps服务仍在运行中了。我们没有设置开机自动启动服务,所以在每次重启云服务器后,我们都需要重新连回终端开启frps服务。
而对于客户端,如果是图像界面就比较无所谓终端占用了,并且因为使用过程中需要虚拟机一直开着,所以我没有配置虚拟机上的服务。
后记
虽然是个人使用的服务,但因为担心安全问题,我还是建议采取一些安全措施:比如主机root用户采用强密码、安装Denyhosts-DenyHosts防御ssh暴力破解 - 知乎 (zhihu.com)等。
其他参考链接:
Ubuntu安装和配置ssh教程_future_ai的博客-CSDN博客_ubuntu安装ssh
云服务器哪家好!2021年阿里云、腾讯云、华为云、百度云的服务器配置及价格对比 - 知乎 (zhihu.com)
centos出现“FirewallD is not running” - 【cosmo】 - 博客园 (cnblogs.com)
【点滴记录】宝塔使用frp配置内网穿透 - 赵苦瓜のBlog (jixiaob.cn)
[frp] 内网穿透神器搭建 萌新也看得懂的教程系列 - 神代綺凛の随波逐流 (moe.best)
(10条消息) (亲测)内网穿透 frp 配置示例_sun-CSDN博客
Linux进程关系 - Vamei - 博客园 (cnblogs.com)
在iPad上连接虚拟机中的ubuntu系统 - 使用frp内网穿透实现在外办公相关推荐
- 【错误记录】VMware 虚拟机报错 ( 向 VMWare 虚拟机中的 Ubuntu 系统拷贝文件时磁盘空间不足 ② | 删除交换空间 )
文章目录 一.报错信息 二.解决方案 一.报错信息 在 [错误记录]VMware 虚拟机报错 ( 向 VMWare 虚拟机中的 Ubuntu 系统拷贝文件时磁盘空间不足 ) 博客中 , 给出了解决方案 ...
- Ubuntu搭建SVN服务 - 内网穿透实现公网远程访问
写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...
- 公网SSH远程Ubuntu:安装cpolar内网穿透映射22端口 2/3
系列文章 公网SSH远程Ubuntu:局域网内ssh远程Ubuntu 1/3 公网SSH远程Ubuntu:安装cpolar内网穿透映射22端口 2/3 公网SSH远程Ubuntu:配置固定的公网TCP ...
- SSH远程连接访问树莓派【无公网IP做内网穿透】
系列文章 树莓派搭建网站,并免费内网穿透发布上线到公网 树莓派搭建WordPress网站,并内网穿透发布上线无需公网IP服务器 为树莓派上的WordPress网站配置自己的域名,并内网穿透发布上线公 ...
- Frp 内网穿透服务器在渗透中的应用
内容 实战-在内网发布服务使之可在公网访问 使用 frp 搭建内网穿透服务器 实战-kali 配置 MSF 接收来自公网的 shell 实战-跨网段获取内网 shell 实战-内网穿透-二级代理 实战 ...
- 跨局域网远程连接神器——frp内网穿透
跨局域网远程连接神器--frp内网穿透 放寒假回家想用服务器跑代码.想用校园网下文章.甚至还想用服务器打两把游戏.这该怎么办?有的大佬会想,可以在家买一个服务器嘛!如果是这样就打扰了...对于我这 ...
- ubuntu20.04上安装和使用frp内网穿透的方法
ubuntu20.04上安装和使用frp内网穿透的方法 第一步:下载frp软件 frp_0.36.2_linux_amd64.tar.gz 下载地址:https://download.csdn.net ...
- CentOS7 使用frp内网穿透 在公司远程桌面连接自家电脑
CentOS7 使用frp内网穿透 在公司远程桌面连接自家电脑 Day1 文章目录 CentOS7 使用frp内网穿透 在公司远程桌面连接自家电脑 前言 一.服务器的安装与配置 面板: 二.客户端的安 ...
- Xshell 无法连接虚拟机中的ubuntu的问题
转自:http://blog.csdn.net/qq_26941173/article/details/51173320 版权声明:本文为博主原创文章,未经博主允许不得转载. 昨天在VMware ...
- 公网SSH远程连接内网Ubuntu主机【cpolar内网穿透】
SSH为建立在应用层基础上的安全协议,专为远程登录会话和其他网络服务提供安全性的协议.但在没有公网IP的环境下,只能在同个局域网下远程. 本篇教程主要实现通过内网穿透,在公网环境下SSH远程登录内网的 ...
最新文章
- 使用C++实现单项选择题标准化考试系统设计
- C程序设计的抽象思维-递归过程-砝码称重
- 【温故知新】HTML学习笔记(上)
- WireShark抓浏览器的https包
- iview table后端分页 多选 翻页选中回显
- Python之简单验证码实现
- 常用函数(字符和字符串)
- C++ float的内存布局
- Windows搭建SonarQube_Mysql
- C语言 实现登录注册功能
- https 非对称加密
- 从数据类型 varchar 转换为 numeric 时出错.
- H3C DHCP中继实验
- java程序设计实验指导书_java程序设计实验指导书-my
- EasyRoad3D使用手册
- matlab 凸多边形,matlab练习程序(多边形顶点凹凸性)
- 毕业这么多年,为啥升职加薪这么难?
- Springboot中下划线转驼峰配置
- 成长的思考:如何在工作中保持高速的自我成长
- 试题 算法训练 后缀数组——最长重复子串
热门文章
- php李炎辉,李炎恢PHP视频教程第一季资源分享
- linux 硬盘自动休眠,【Linux】硬盘休眠
- 浅谈,盘点历史上有哪些著名的电脑病毒,80%的人都不知道!
- 第5章第24节:如何在幻灯片中播放视频文件 [PowerPoint精美幻灯片实战教程]
- 24位真彩色bmp图片转8位256色带调色板的bmp图
- linux在服务器上下载文件,上传下载文件到Linux服务器
- windows下ghostscript (gs)安装,环境变量设置,是否安装成功
- 穷养的女孩和富养的女孩的区别在哪?
- chariot iperf使用_iperf局域网性能工具
- html5兼容包,webpack4搭建现代Hybird-h5工程