✨ Linux | CentOS虚拟机私有云环境搭建

今天来使用 VirtualBox 在 Win 下搭建 Linux 云桌面。😄

搭建之后,我们就可以从全球任意一个有互联网的地方,在各种平台(Windows、MacOS、Linux、Android、IOS)连接上专属的CentOS云桌面

准备工作

软件:

配置虚拟机

下载好虚拟机和镜像之后,进入 VirtualBox,新建一个虚拟机

1536408199791

先给他添加第二张网卡,指定为Host-Only模式

把系统镜像加载进去,然后启动!

我这里选择的是CentOS7 Minimal的系统镜像,启动虚拟机后就会加载出安装界面

这时候只需要一直下一步就可以了

1536408276255

然后一番设置之后,安装完成

重启

输入账号密码登陆

1536411365721

到此为止,CentOS 就基本安装完成了。

接下来需要配置一下软件

配置系统

更换软件源

首先把CentOSyum源换成国内的镜像源

1
2
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache

然后升级一下内核以及软件

1
yum update

然后装一些必要的软件。比如vim

1
yum install vim

增强功能

首先通过菜单将增强功能的iso挂载到光盘上

然后安装必要的编译环境

1
yum install gcc kernel-devel kernel-headers bzip2

然后挂载cdrom

1
2
3
4
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
./VBoxLinuxAdditions.run

网络配置

想要主机和虚拟机可以互联,那么就需要配置一番网络。可以分配动态地址或静态地址

动态地址

首先在VirtualBox里面新增一个网卡菜单 > 主机网络管理器

1536480866957

然后启用 DHCP 服务器

1536480890664

那么就会为虚拟机自动分配一个 IP 地址,非常方便

然后虚拟机运行nmtui,选择Activate a connection

1536480955829

将第二块网卡激活,然后确定保存

之后就可以通过ip addr查看 DHCP 为虚拟机分配的地址了。

1536414979277

这里获取到的是192.168.56.101

静态地址

但是这样依赖虚拟机的网络地址是动态的,不利于我们 SSH 连接,因此需要分配一个静态地址给虚拟机

我们再新建一张网卡,关闭掉DHCP服务器

1536481117352

手动输入一个指定的地址

1536481152874

然后虚拟机内打开nmtui 选择Edit a connection, 找到第二块网卡(注意,通常在列表的第一位,需要看准名字),进入Edit

1536496603256

注意这里的地址不能和网卡的地址一样,不然就会造成冲突导致ssh无法连接到虚拟机上

最后重启一下网络服务

1
service network restart

然后运行ip addr可以看到地址已经成功设置

1536482285791

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,同样是成功的

1536415208967

然后再 Win 下尝试ssh连接虚拟机

1536415301532

大功告成 😄~

配置好 SSH 之后,虚拟机就不需要启动界面了,通过无界面启动或者分离式启动,然后通过ssh连接到虚拟机,体检比直接操作虚拟机好多了~

备份虚拟机

利用VirtualBox的复制功能,将配置好的虚拟机备份一波,然后就可以折腾了

然后就可以得到两个占用空间1.83G的开箱即用的CentOS

1536415536959

外网访问

映射到宿主机

建立好虚拟机之后,当然不仅仅可以在本地服务,把端口暴露出去,就可以随时随地访问了。

首先为虚拟机建立一个端口转发

1536416021952

将子系统的22端口映射到宿主机的10022端口

1536415968707

然后尝试ssh连接指定端口

1536416360487

映射到校园网

因为我的电脑是通过路由器接入校园网的,因此下一步通过设置路由的端口映射,将端口映射出去,我这里用的是基于Pandorabox的路由

1536416557429

将内网的10022端口映射到校园网,然后就可以通过校园网的 IP 访问虚拟机了

1536416653138

映射到公网

要是想再进一步映射到公网呢?

这就需要有

  • 公网服务器
  • 公网 IP

这里我使用腾讯云的主机和frp来映射

Frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议

编辑frp的客户端配置文件frpc.ini

1
2
3
4
5
6
7
8
9
[common]
server_addr = 你的服务器IP
server_port = 7000
privilege_token = xxxxxx

[CentOS_SSH]
type = tcp
local_port = 10022
remote_port = 10022

然后编辑frp的服务端配置frps.ini

1
2
3
[common]
bind_port = 7000
privilege_token = xxxxxx

然后现在服务器上后台执行frp

1
nohup ./frps -c ./frps.ini &

然后在本机上连接

1
./frpc.exe -c frpc.ini

1536417131830

可以看到成功连接上了

PS:记得把服务器的相应端口打开

然后用域名或者公网 IP 访问

这样就可以在全球任意一个地方远程登陆这个虚拟机了

1536417282064

如果你并没有公网服务器和 IP,也可以借助网上现成的服务,比如国内的花生壳之类的服务供应商,他们都有提供内网穿透的服务,甚至可以直接部署在路由上面。

配置 SSH 密钥登陆

暴露到公网之后,安全问题就很重要了,因此需要使用安全性更高的密钥来代替密码登陆

首先你要有你自己的公钥的私钥,这些网上的教程很多,可以自己去查查

然后,把自己的公钥通过sftp或者scp上传到CentOS中的用户文件夹下的./.ssh/authorized_keys

注意ssh会检查你用户home~/.ssh目录的权限,这些目录只应该你自己有写权限,不应有组写权限

因此需要修改一下权限

1
2
3
chmod g-w /home/your_user
chmod 700 /home/your_user/.ssh
chmod 600 /home/your_user/.ssh/authorized_keys

vim编辑/etc/ssh/sshd_config 把下面这一行的注释#去掉,然后保存

1
PubkeyAuthentication yes

然后重启ssh服务

1
service sshd restart

然后就可以通过ssh连接了

1536423463401

通过p指定端口,通过i指定密钥文件,就可以实现通过密钥登陆了

总结

这次使用了虚拟机搭建了一个Linux的开发环境。虽然我已经有几台公网上的Linux服务器,但是虚拟机有一个好处就是可以随意折腾,不担心搞坏,随时都可以通过之前备份的副本再建立一个虚拟机,这都是极好的。这样就搭建好了一个属于自己的私有云环境。

土豪通道
0%