今天来使用 VirtualBox 在 Win 下搭建 Linux 云桌面。😄
搭建之后,我们就可以从全球任意一个有互联网的地方,在各种平台(Windows、MacOS、Linux、Android、IOS)连接上专属的CentOS
云桌面
准备工作
软件:
Linux 发行版
- CentOS (阿里镜像源)
- Ubuntu
- Debian
配置虚拟机
下载好虚拟机和镜像之后,进入 VirtualBox,新建一个虚拟机
先给他添加第二张网卡,指定为Host-Only
模式
把系统镜像加载进去,然后启动!
我这里选择的是CentOS7 Minimal
的系统镜像,启动虚拟机后就会加载出安装界面
这时候只需要一直下一步就可以了
然后一番设置之后,安装完成
重启
输入账号密码登陆
到此为止,CentOS 就基本安装完成了。
接下来需要配置一下软件
配置系统
更换软件源
首先把CentOS
的yum
源换成国内的镜像源
1 | curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo |
然后升级一下内核以及软件
1 | yum update |
然后装一些必要的软件。比如vim
1 | yum install vim |
增强功能
首先通过菜单将增强功能的iso
挂载到光盘上
然后安装必要的编译环境
1 | yum install gcc kernel-devel kernel-headers bzip2 |
然后挂载cdrom
1 | mkdir /mnt/cdrom |
网络配置
想要主机和虚拟机可以互联,那么就需要配置一番网络。可以分配动态地址或静态地址
动态地址
首先在VirtualBox
里面新增一个网卡菜单 > 主机网络管理器
然后启用 DHCP 服务器
那么就会为虚拟机自动分配一个 IP 地址,非常方便
然后虚拟机运行nmtui
,选择Activate a connection
将第二块网卡激活,然后确定保存
之后就可以通过ip addr
查看 DHCP 为虚拟机分配的地址了。
这里获取到的是192.168.56.101
静态地址
但是这样依赖虚拟机的网络地址是动态的,不利于我们 SSH 连接,因此需要分配一个静态地址给虚拟机
我们再新建一张网卡,关闭掉DHCP服务器
手动输入一个指定的地址
然后虚拟机内打开nmtui
选择Edit a connection
, 找到第二块网卡(注意,通常在列表的第一位,需要看准名字),进入Edit
注意这里的地址不能和网卡的地址一样,不然就会造成冲突导致ssh
无法连接到虚拟机上
最后重启一下网络服务
1 | service network restart |
然后运行ip addr
可以看到地址已经成功设置
SSH 连接
CentOS7
里面内置了openssh
服务,我们只需要启用就可以了
用vim
编辑/etc/ssh/sshd_config
把下面这一行的注释#
去掉,然后保存
1 | Port 22 |
PS: 如果你是root
用户,还需要把PermitRootLogin yes
前面的注释去掉
然后开启服务
1 | service sshd start |
然后通过ip addr
找到虚拟机的 IP
然后同样 Win 下执行ipconfig
查看当前 IP, 在虚拟机内尝试ping
主机 IP,图中可以看到可以成功连接
然后再 Win 下ping
虚拟机的 IP,同样是成功的
然后再 Win 下尝试ssh
连接虚拟机
大功告成 😄~
配置好 SSH 之后,虚拟机就不需要启动界面了,通过无界面启动
或者分离式启动
,然后通过ssh
连接到虚拟机,体检比直接操作虚拟机好多了~
备份虚拟机
利用VirtualBox
的复制功能,将配置好的虚拟机备份一波,然后就可以折腾了
然后就可以得到两个占用空间1.83G
的开箱即用的CentOS
了
外网访问
映射到宿主机
建立好虚拟机之后,当然不仅仅可以在本地服务,把端口暴露出去,就可以随时随地访问了。
首先为虚拟机建立一个端口转发
将子系统的22
端口映射到宿主机的10022
端口
然后尝试ssh
连接指定端口
映射到校园网
因为我的电脑是通过路由器接入校园网的,因此下一步通过设置路由的端口映射,将端口映射出去,我这里用的是基于Pandorabox
的路由
将内网的10022
端口映射到校园网,然后就可以通过校园网的 IP 访问虚拟机了
映射到公网
要是想再进一步映射到公网呢?
这就需要有
- 公网服务器
- 公网 IP
这里我使用腾讯云的主机和frp
来映射
Frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议
编辑frp
的客户端配置文件frpc.ini
1 | [common] |
然后编辑frp
的服务端配置frps.ini
1 | [common] |
然后现在服务器上后台执行frp
1 | nohup ./frps -c ./frps.ini & |
然后在本机上连接
1 | ./frpc.exe -c frpc.ini |
可以看到成功连接上了
PS:记得把服务器的相应端口打开
然后用域名或者公网 IP 访问
这样就可以在全球任意一个地方远程登陆这个虚拟机了
如果你并没有公网服务器和 IP,也可以借助网上现成的服务,比如国内的花生壳之类的服务供应商,他们都有提供内网穿透的服务,甚至可以直接部署在路由上面。
配置 SSH 密钥登陆
暴露到公网之后,安全问题就很重要了,因此需要使用安全性更高的密钥来代替密码登陆
首先你要有你自己的公钥的私钥,这些网上的教程很多,可以自己去查查
然后,把自己的公钥通过sftp
或者scp
上传到CentOS
中的用户文件夹下的./.ssh/authorized_keys
注意ssh
会检查你用户home
或~/.ssh
目录的权限,这些目录只应该你自己有写权限,不应有组写权限
因此需要修改一下权限
1 | chmod g-w /home/your_user |
用vim
编辑/etc/ssh/sshd_config
把下面这一行的注释#
去掉,然后保存
1 | PubkeyAuthentication yes |
然后重启ssh
服务
1 | service sshd restart |
然后就可以通过ssh
连接了
通过p
指定端口,通过i
指定密钥文件,就可以实现通过密钥登陆了
总结
这次使用了虚拟机搭建了一个Linux
的开发环境。虽然我已经有几台公网上的Linux
服务器,但是虚拟机有一个好处就是可以随意折腾,不担心搞坏,随时都可以通过之前备份的副本再建立一个虚拟机,这都是极好的。这样就搭建好了一个属于自己的私有云环境。