系统:macOS High Sierra 10.13.1
功能:linux虚拟机可以上网,静态ip设置,ssh远程登陆,ftp文件传输
由于最近需要做faiss快速检索有关的部分,所以需要搭建一个linux虚拟机(faiss快速检索其实也可以搭建在macOS Sierra 10.12中) 但是本人强迫症给电脑升级了。所以就顺手搭建一个linux系统。
VirtualBox(下载链接)安装很简单,下载之后点击.dmg文件按指引安装即可。除了VirtualBox以外,ParallelsDesktop、VMware Fusion8也是可以的,但都是收费软件。我选择VirtualBox是因为它轻量、开源、免费、跨平台的,功能上能满足我的需求。
下载好CentOS7 Minimal(下载链接)的ISO镜像之后,就开始系统的安装(我的VirtualBox是英文版),步骤如下:
设置完成点击Start启动虚拟机,这时候弹框需要输入一个系统镜像,选择之前下载完成的CentOS镜像文件路径,点Start开始安装。安装过程很简单,系统安装位置选默认分区点一下,进行下一步进行安装,安装时间会比较长,过程中设置root密码,是否创建新用户由自己决定。(其中有网络设置,将其中打开之后,就可以免去后面***设置网络***部分的工作了)
系统安装好之后点击重启,进入系统出现黑框要求输入登录账号和密码,系统就装好了。
系统安装好之后启动,如果没有点网络连接的话,那么网卡将不会启动启动。(如下)
[root@localhost ~]# curl www.baidu.com
curl: (6) Could not resolve host: www.baidu.com; Unknown error
这里需要手动做一下配置。
输入命令ip addr可以看到有两个网卡lo、enp0s3前者的地址是127.0.0.1,后者没有ip地址,这里需要手动配置网卡enp0s3自动启动,打开vi /etc/sysconfig/network-scripts/编辑文件名为ifcfg-enp0s3内容设置ONBOOT=yes,然后重启系统reboot,IP获取正常,可以访问网络了。
实际使用系统开发的时候,通常是在主机(Host)上使用ssh访问虚拟机(CentOS系统),使用ip addr可以看到网卡enp0s3的IP地址10.0.2.15,但是直接ssh这个地址是不行的。
ssh [email protected] //网络不通,无响应
这是因为默认网络模式是NAT,该模式下虚拟机通过主机所在网络连接外网,但是主机不能直接访问虚拟机,解决办法是设置端口转发,规则如下:
'''<规则名>,<协议>,<主机IP>,<主机端口>,<虚拟机IP>,<虚拟机端口> '''
# 方法1:可在虚拟机关闭的情况下在主机上使用如下命令设置(非root权限)
VBoxManage modifyvm "CentOS" --natpf1 "SSH,tcp,,2222,,22"
# 为虚拟机"CentOS"设置端口转发规则,所以主机上2222端口上的tcp请求全部转发到虚拟机22(ssh的端口)端口上。
# 方法2:也可以指定主机或虚拟机的IP
VBoxManage modifyvm "CentOS" --natpf1 "SSH,tcp,127.0.0.1,2222,,22"
# 就只会转发127.0.0.1:2222的tcp请求到虚拟机22端口上
设置完端口转发之后,启动虚拟机,就可以在主机通过ssh访问虚拟机了。端口转发设置也可以通过VirtualBox的虚拟机设置界面设置。
通过端口转发在NAT模式下实现主机访问虚拟机,但是每个端口都需要设置很麻烦。另一种办法就是设置一个Host-Only网络,为虚拟机增加一个Host-Only的网络适配器,实现主机与虚拟机之间的互通。
首先,需要创建一个Host-Only网络,路径VirtualBox->Preferences->Network->Host-Only Networks点击新增,会创建 vboxnet0。
关闭虚拟机,设置虚拟机Settings->Network->Adapter2->Enable Network Adapter选择Host-Only Adapter,Name选择刚创建的vboxnet0,点完成,重启虚拟机。
虚拟机中使用ip addr可以看到多了一个网卡enp0s8的IP地址192.168.56.102,这时:
//使用ssh通过该IP访问虚拟机
ssh [email protected] //OK,成功
方法一:
默认情况下虚拟机的IP是由VirtualBox的DHCP服务动态分配的,这在多台虚拟机的情况下不容易管理,最好一台机器固定一个IP,这时需要静态IP。
我们是通过Host-Only的方式来访问虚拟机,那么这里设置enp0s8网卡为静态IP,在创建vboxnet0的地方**(VirtualBox->Preferences->Network->Host-Only Networks),双击enp0s8**进入修改,点击修改为:不使用DHCP服务动态分配。
修改虚拟机enp0s8网卡的配置**/etc/sysconfig/network-scripts/ifcfg-enp0s8:**
OTPROTO=static //静态模式
IPADDR=192.168.56.??? //地址
NETMASK=255.255.255.0
NAME=enp0s8
DEVICE=enp0s8
ONBOOT=yes //开机启动
重启虚拟机,使用ip addr可以看到IP地址现在是192.168.56.???,设置成功。
方法二:
和上述方法在相同的位置,在创建vboxnet0的地方,(VirtualBox->Preferences->Network->Host-Only Networks),双击enp0s8进入修改,这时不用不使用动态ip,只需要将最大最小ip调为一样即可:(如下)
同样,重启虚拟机,使用ip addr可以看到IP地址现在是192.168.56.???,设置成功。
基于ssh远程登陆配置完成的基础之上才可以
其实只要下载一个FTP文件传输的软件即可,我用的是 FileZilla,避免认为我是恶意推广,我就不放链接了,很容易就能找到类似软件:
最上面要填的:
主机IP:192.168.56.xxx
用户名:root
密码: ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ******** ∗∗∗∗∗∗∗∗
端口:22
之后将想要传输的文件直拖到想上传的位置即可。