要开发Linux程序,前提需要一个Linux操作系统。通常在公司开发项目都会有一台专门的Linux服务器,而读者可以使用虚拟机软件比如VMware来安装一个虚拟机中的Linux操作系统。
VMware是虚拟机软件,它通常分两种版本:工作站版本VMware Workstation和服务器客户机版本VMware vSphere。这两类软件都可以安装操作系统作为虚拟机操作系统。但个人用得较多的是工作站版本,供单人在本机使用。VMware vSphere通常用于企业环境,供多人远程使用。通常,我们把自己真实PC上装的操作系统叫宿主机系统,VMware中安装的操作系统叫虚拟机系统。
VMware Workstation大家可以到网上去下载,它是Windows软件,安装非常简单。笔者这里使用的版本是15.5,其他版本也可以。注意,VMware Workstation 16不支持Windows 7了,必须Windows 8或以上Windows版本。
通常我们开发Linux程序,往往先在虚拟机下安装Linux操作系统,然后在这个虚拟机的Linux系统中编程调试,或在宿主机系统(比如Windows)中进行编辑,然后传到Linux中进行编译。有了虚拟机的Linux系统,开发方式比较灵活。实际上,不少一线开发工程师都是在Windows下阅读编辑代码,然后放到Linux环境中编译运行的。
这里我们采用的虚拟机软件是VMware Workstation 15.5(它是最后一个能安装在Windows 7上的版本)。在安装Linux之前我们要准备Linux映像文件(ISO文件),可以从网上直接下载Linux操作系统的ISO文件,也可以通过UltraISO等软件从Linux系统光盘制作一个ISO文件,制作方法是在菜单上选择“工具”|“制作光盘映像文件”。
不过,笔者建议还是直接从网上下载一个ISO文件来得简单。笔者就从Ubuntu官网(https://ubuntu.com)上下载了一个64位的Ubuntu20.04,下载下来的文件名是ubuntu-20.04.1-desktop-amd64.iso。当然其他发行版本也可以,如Redhat、Debian、Ubuntu或Fedora等,作为学习开发环境都可以,但建议用较新的版本。
ISO文件准备好了后,就可以通过VMware来安装Linux了,打开Vmware Workstation,然后根据下面几个步骤操作即可。
步骤02 单击“下一步”按钮,出现“安装来源”选项组,由于VMware15默认会让Ubuntu简易安装,而简易安装可能会导致很多软件装不全,为了避免VMware简易安装Ubuntu,因此选择“稍后安装操作系统”,如图2-2所示。
图2-1
图2-2
步骤03 单击“下一步”按钮,在“安装哪种操作系统”下选择“Linux”和“Ubuntu 64位”,如图2-3所示。
步骤04 单击“下一步”按钮,此时出现“命名虚拟机”对话框,设置虚拟机名称为“Ubuntu20.04”,位置可以选一个磁盘空闲空间较多的磁盘,这里选择的的是“g:\vm\Ubuntu20.04”,然后单击“下一步”按钮,出现“指定磁盘容量”对话框,保持默认20G,再多一些也可以,其他保持默认,继续单击“下一步”,此时出现“已准备好创建虚拟机”对话框,这一步只是让我们看一下前面设置的配置列表。直接单击“完成”按钮即可。此时VMware主界面上可以看到一个名为“Ubuntu20.04”的虚拟机,如图2-4所示。
步骤05 单击“编辑虚拟机设置”按钮,此时出现“虚拟机设置”对话框,在硬件列表中选中“CD/DVD(IDE)”,右边选中“使用ISO镜像文件”,并单击“浏览”按钮,选择下载的ubuntu-20.04.1-desktop-amd64.iso文件,如图2-5所示。
图2-3
图2-4
图2-5
步骤06 这里虚拟机Ubuntu使用的内存是2GB。接着单击下方“确定”按钮,关闭“虚拟机设置”对话框。此时回到了主界面,单击“开启此虚拟机”,出现Ubuntu20.04的安装界面,如图2-6所示。
图2-6
步骤07 在界面左边选择语言为“中文(简体)”,然后在界面右边单击“安装Ubuntu”按钮。安装过程很简单,保持默认即可,这里不再赘述。另外要注意的是,安装时需要主机保持联网,因为有很多软件需要下载。
稍等片刻,虚拟机Ubuntu20.04安装完毕,下面我们需要对其进行一些设置,使其使用起来更加方便。
我们在安装Ubuntu的时候会新建一个普通用户,该用户权限有限。开发者一般需要root账户,这样操作和配置起来比较方便。Ubuntu默认是不开启root账户的,所以需要手动打开,步骤如下:
先以普通账户登录Ubuntu,在桌面上右击选择“在终端中打开”打开终端模拟器,并输入命令:
sudo passwd root
然后输入设置的密码,输入两次,这样就完成了设置root用户密码了。为了好记,我们把密码设置为123456。
步骤02 修改50-ubuntu.conf。
执行sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf把配置改为如下所示:
[Seat:*] user-session=ubuntu greeter-show-manual-login=true all-guest=false
保存后关闭编辑器。
步骤03 修改gdm-autologin和gdm-password。
执行sudo gedit /etc/pam.d/gdm-autologin,然后注释auth required pam_succeed_if.so user !=root quiet_success这一行(第三行左右),修改后如下所示:
#%PAM-1.0 auth requisite pam_nologin.so #auth required pam_succeed_if.so user != root quiet_success
保存后关闭编辑器。
再执行sudo vim /etc/pam.d/gdm-password注释auth required pam_succeed_if.so user != root quiet_success这一行(第三行左右),修改后如下所示:
#%PAM-1.0 auth requisite pam_nologin.so #auth required pam_succeed_if.so user != root quiet_success
保存后关闭编辑器。
步骤04 修改/root/.profile文件。
执行sudo vim/root/.profile,将文件末尾的mesg n 2> /dev/null || true这一行修改成:
tty -s&&mesg n || true
步骤05 修改/etc/gdm3/custom.conf。
如果要每次自动登录到root账户,可以做这一步,否则不需要。执行sudo /etc/gdm3/custom.conf,修改后如下所示:
# Enabling automatic login AutomaticLoginEnable = true AutomaticLogin = root # Enabling timed login TimedLoginEnable = true TimedLogin = root TimedLoginDelay = 5
步骤06 重启系统使其生效。
如果做了步骤(5),则重启会自动登录到root账户,否则会提示输入root账户密码。
为了以后联网方便,最好一开始就把防火墙关闭,输入命令如下:
root@tom-virtual-machine:~/桌面# sudo ufw disable 防火墙在系统启动时自动禁用 root@tom-virtual-machine:~/桌面# sudo ufw status 状态:不活动
其中ufw disable表示关闭防火墙,而且系统启动时会自动关闭。ufw status是查询当前防火墙是否在运行,不活动表示不在运行。如果以后要开启防火墙,则输入sudo ufw enable即可。
安装网络工具包,在命令行输入如下命令:
apt install net-tools
待安装完成,再输入ifconfig,可以查询到当前IP:
root@tom-virtual-machine:~/桌面# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.11.129 netmask 255.255.255.0 broadcast 192.168.11.255 inet6 fe80::9114:9321:9e11:c73d prefixlen 64 scopeid 0x20<link> ether 00:0c:29:1f:a1:18 txqueuelen 1000 (以太网) RX packets 7505 bytes 10980041 (10.9 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1985 bytes 148476 (148.4 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
可以看到,网卡ens33的IP地址是192.168.11.129,这是系统自动分配(DHCP方式)的,并且当前和宿主机采用的网络连接模式NAT方式,这也是刚刚安装好系统默认的方式。只要宿主机Windows能上网,则虚拟机也是可以上网的。
使用Linux一般不会在Linux自带的图形界面上操作,而是在Windows下通过Windows的终端工具(比如SecureCRT等)连接到Linux,然后使用命令操作Linux,这是因为Linux所处的机器通常不配置显示器,也可能位于远程,我们只通过网络和远程Linux相连接。Windows上的终端工具一般通过SSH协议和远程Linux相连,该协议可以保证网络上传输数据的机密性。
Secure Shell(SSH)是用于客户端和服务器之间安全连接的网络协议。服务器与客户端之间的每次交互均被加密。启用SSH将允许读者远程连接到系统并执行管理任务。读者还可以通过scp和sftp安全地传输文件。启用SSH后,我们可以在Windows上用一些终端软件比如SecureCRT远程命令操作Linux,也可以用文件传输工具比如SecureFX在Windows和Linux之间相互传文件。
Ubuntu默认是不安装SSH的,因此我们要手动安装并启用。
安装并配置SSH的具体步骤如下:
在Ubuntu 20.04的终端命令下输入命令如下:
apt install openssh-server
稍等片刻,安装完成。
步骤02 修改配置文件。
在命令行下输入如下命令:
gedit /etc/ssh/sshd_config
此时将打开SSH服务器配置文件sshd_config,我们搜索定位PermitRootLogin,把下列3行:
#LoginGraceTime 2m #PermitRootLogin prohibit-password #StrictModes yes
改为:
LoginGraceTime 2m PermitRootLogin yes StrictModes yes
然后保存并退出编辑器gedit。
步骤03 重启SSH,使配置生效。
在命令行下输入如下命令:
service ssh restart
再用命令systemctl status ssh查看是否在运行:
oot@tom-virtual-machine:~/桌面# systemctl status ssh ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: e> Active: active (running) since Thu 2020-12-03 21:12:39 CST; 55min ago Docs: man:sshd(8) man:sshd_config(5)
可以发现现在的状态是active (running),说明SSH服务器程序正在运行。稍后可以去Windows下用Windows终端工具连接虚拟机Ubuntu,下面我们来拍摄快照,保存好前面做的工作。
VMware快照功能,可以把当前虚拟机的状态保存下来,万一以后虚拟机操作系统出错了,可以恢复到拍摄快照时候的系统状态。选择VMware主菜单“虚拟机”|“快照”|“拍摄快照”,然后出现“拍摄快照”对话框,如图2-7所示。
图2-7
我们可以添加一些描述,比如刚刚装好之类的,然后单击“拍摄快照”按钮,此时正式制作快照,并在VMware左下角任务栏上会有百分比进度显示,在达到100%之前不要对VMware进行操作。待进度条显示100%,表示快照制作完毕。
虚拟机Linux准备好后,要在物理机器上的Windows操作系统(简称宿主机)上连接VMware中的虚拟机Linux(简称虚拟机),以便传送文件和远程控制编译运行。基本上,两个系统能相互ping通就算连接成功了。下面简单介绍VMware的三种网络模式,以便连接失败的时候可以尝试修复。
VMware虚拟机网络模式的意思就是虚拟机操作系统和宿主机操作系统之间的网络拓扑关系,通常有三种方式:桥接模式、主机模式、NAT(Network Adderss Translation,网络地址转换)模式。这三种网络模式都通过一台虚拟交换机和主机通信。默认情况下,桥接模式下使用的虚拟交换机是VMnet0,主机模式下使用的虚拟交换机为VMnet1,NAT模式下使用的虚拟交换机为VMnet8。如果需要查看、修改或添加其他虚拟交换机,可以打开VMware,然后选择主菜单“编辑”|“虚拟网络编辑器”,此时会出现“虚拟网络编辑器”对话框,如图2-8所示。
默认情况下,VMware也会为宿主机操作系统(笔者这里是Windows 7)安装两块虚拟网卡,分别是“VMware Virtual Ethernet Adapter for VMnet1”和“VMware Virtual Ethernet Adapter for VMnet8”,前者用来连接虚拟交换机VMnet1,后者用来连接VMnet8。我们可以在宿主机Windows 7系统的“控制面板\网络和Internet\网络连接”下看到这两块网卡。如图2-9所示。
图2-8
图2-9
虚拟交换机VMnet0在宿主机系统里没有虚拟网卡去连接,因为VMnet0这个虚拟交换机所建立的网络模式是桥接网络(桥接模式中的虚拟机操作系统相当于是宿主机所在的网络中一台独立主机),所以主机直接用物理网卡去连接VMnet0。
值得注意的是,这三种虚拟交换机都是默认就有的,我们也可以添加更多的虚拟交换机(在图2-8中的“添加网络”按钮便是起这样的功能),如果添加的虚拟交换机的网络模式是主机模式或NAT模式,那VMware也会自动为主机系统添加相应的虚拟网卡。本书在开发程序的时候一般是桥接模式连接的,如果要在虚拟机中上网,则可以使用NAT模式。接下来我们具体阐述如何在这两种模式下相互ping通,主机模式不常用,一般了解即可。
桥接(或称网桥)模式是指宿主机操作系统的物理网卡和虚拟机操作系统的网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位。网桥模式使用VMnet0这个虚拟交换机。桥接模式下的网络拓扑如图2-10所示。
图2-10
设置桥接模式,使得宿主机和虚拟机相互ping通。过程如下:
(1)打开VMware,单击Ubuntu20.04的“编辑虚拟机设置”按钮,如图2-11所示。
图2-11
要注意此时虚拟机Ubuntu20.04必须处于关机状态,即“编辑虚拟机设置”上面的文字是“开启此虚拟机”,说明虚拟机是关机状态。通常,对虚拟机进行设置最好是在虚拟机的关机状态,比如更改内存大小等。不过,如果只是配置网卡信息,也可以在开启虚拟机后再进行设置。
(2)单击“编辑虚拟机设置”按钮后,弹出“虚拟机设置”对话框,在该对话框中,我们在左边选中“网络适配器”,在右边选中“桥接模式”单选按钮,并对“复制物理网络连接状态”复选框打勾,如图2-12所示。
图2-12
然后单击“确定”按钮,开启此虚拟机,以root身份登录Ubuntu。
(3)设置了桥接模式后,VMware的虚拟机操作系统就像是局域网中的一台独立的主机,相当于物理局域网中的一台主机。它可以访问网内任何一台机器。在桥接模式下,VMware的虚拟机操作系统的IP地址、子网掩码可以手动设置,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信,如果要连接互联网,还需要设置DNS地址。当然,更方便的方法是从DHCP服务器处获得IP、DNS地址(家庭路由器通常包含DHCP服务器,所以可以从它那里自动获取IP和DNS等信息)。
在桌面上右击,然后在快捷菜单中选择“在终端中打开”来打开终端窗口,然后在终端窗口(下面简称终端)中输入查看网卡信息的命令ifconfig,如图2-13所示。
图2-13
其中ens33是当前虚拟机Linux中的一块网卡名称,我们可以看到它已经有一个IP地址192.168.0.118(注意:由于是从路由器上动态分配而得到的IP地址,读者系统的IP地址不一定是这个,完全根据读者的路由器而定),这个IP地址是由笔者宿主机Windows 7的一块上网网卡所连接的路由器动态分配而来,说明路由器分配的网段是192.168.0,这个网段是在路由器中设置好的。我们可以到宿主机Windows 7下看看当前上网网卡的IP地址,打开Windows 7命令行窗口,输入ipconfig命令,如图2-14所示。
可以看到,这个上网网卡的IP地址是192.168.0.162,这个IP也是路由器分配的,而且和虚拟机Linux中的网卡是处于同一网段。为了证明IP地址是动态分配的,我们可以打开Windows 7下该网卡的属性窗口,如图2-15所示。
图2-14
图2-15
那如何证明虚拟机Linux网卡的IP是动态分配的呢?我们可以到Ubuntu下去看看它的网卡配置文件,单击Ubuntu桌面左下角出的9个小白点的图标,弹出一个“设置”图标,单击“设置”图标,出现“设置”对话框,在对话框左上方选择“网络”,右边单击“有线”旁边的“设置”图标,如图2-16所示。
图2-16
此时出现“有线”对话框,选择IPv4,可以看到当前IPv4方式是“自动(DHCP)”,如图2-17所示。
图2-17
如果要设置静态IP,可以选择“手动”,并设置IP。虚拟机Linux和宿主机Windows 7都通过DHCP方式从路由器那里得到了IP地址,我们可以让它们相互ping一下。先从虚拟机Linux中ping宿主机Windows 7,可以发现能ping通(注意Windows 7的防火墙要先关闭),如图2-18所示。
图2-18
再从宿主机Windows 7中ping虚拟机Linux,也可以ping通(注意Ubuntu的防火墙要先关闭),如图2-19所示。
图2-19
至此,桥接模式的DHCP方式下,宿主机和虚拟机能相互ping通了,而且现在在虚拟机Ubuntu下是可以上网的(前提是宿主机也能上网),比如我们用火狐浏览器打开网页,如图2-20所示。
下面,我们再来看一下静态方式下的相互ping通,静态方式的网络环境比较单纯,并且是手动设置IP地址,这样可以和读者的IP地址保持完全一致,读者学习起来比较方便。所以,本书很多网络场景都会用到桥接模式的静态方式。
图2-20
首先设置宿主机Windows 7的IP地址为120.4.2.200,再设置虚拟机Ubuntu的IP地址为120.4.2.8,如图2-21所示。
单击右上角“应用”按钮后重启即生效,然后就能相互ping通了,如图2-22所示。
图2-21
图2-22
至此,桥接模式下的静态方式相通ping成功。如果想要重新恢复DHCP动态方式,则只需在图2-21中选择IPv4方式为“自动(DHCP)”,并单击右上角“应用”按钮,然后在终端窗口用命令重启网络服务即可,命令如下:
root@tom-virtual-machine:~/桌面# nmcli networking off root@tom-virtual-machine:~/桌面# nmcli networking on
然后再查看IP地址,可以发现IP地址变了,如图2-23所示。
图2-23
桥接模式的动态方式,不影响主机上网,故在虚拟机Linux中也可以上网。
VMware的Host-Only(仅主机模式)就是主机模式。默认情况下物理主机和虚拟机都连在虚拟交换机VMnet1上,VMware为主机创建的虚拟网卡是VMware Virtual Ethernet Adapter for VMnet1,主机通过该虚拟网卡和VMnet1相连。主机模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通信。当然主机模式下也可以让虚拟机连接互联网,方法是可以将主机网卡共享给VMware Network Adapter for VMnet1网卡,从而达到虚拟机联网的目的。但一般主机模式都是为了和物理主机的网络隔开,仅让虚拟机和主机通信。因为用得不多,这里不再展开。
如果虚拟机Linux要上网,则NAT模式最方便。NAT模式也是VMware创建虚拟机的默认网络连接模式。使用NAT模式网络连接时,VMware会在宿主机上建立单独的专用网络,用以在主机和虚拟机之间相互通信。虚拟机向外部网络发送的请求数据将被“包裹”,都会交由NAT网络适配器加上“特殊标记”并以主机的名义转发出去。外部网络返回的响应数据将被拆“包裹”,也是先由主机接收,然后交由NAT网络适配器根据“特殊标记”进行识别并转发给对应的虚拟机,因此,虚拟机在外部网络中不必具有自己的IP地址。从外部网络来看,虚拟机和主机共享一个IP地址,默认情况下,外部网络终端也无法访问到虚拟机。
此外,在一台宿主机上只允许有一个NAT模式的虚拟网络。因此,同一台宿主机上的多个采用NAT模式网络连接的虚拟机也是可以相互访问的。
设置虚拟机NAT模式过程如下:
(1)编辑虚拟机设置,使得网卡的网络连接模式为NAT模式,如图2-24所示,然后单击“确定”按钮。
图2-24
(2)编辑网卡配置文件,设置以DHCP方式获取IP地址,即修改ifcfg-ens33文件中的字段BOOTPROTO为dhcp即可。命令如下:
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# ls ifcfg-ens33 [root@localhost network-scripts]# gedit ifcfg-ens33 [root@localhost network-scripts]# vi ifcfg-ens33
编辑网卡配置文件ifcfg-ens33内容如下:
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=e816b1b3-1bb9-459b-a641-09d0285377f6 DEVICE=ens33 ONBOOT=yes
保存并退出。接着再重启网络服务,以生效刚才的配置:
[root@localhost network-scripts]# nmcli c reload [root@localhost network-scripts]# nmcli c up ens33
连接已成功激活(D-Bus,活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)。
此时查看网卡ens的IP地址,发现已经是新的IP地址了,如图2-25所示。
图2-25
可以看到网卡ens33的IP地址变为192.168.11.128了,值得注意的是,由于是dhcp动态分配IP地址,也有可能不是这个IP地址。是192.168.11的网段是因为VMware为VMnet8默认分配的网段就是192.168.11网段,我们可以单击菜单“编辑”|“虚拟网络编辑器”看到,如图2-26所示。
当然我们也可以改成其他网段,只要对图2-26中的192.168.11.0重新编辑即可。这里就先不改了,保持默认。已经知道虚拟机Linux中的IP地址了,那宿主机Windows 7的IP地址是多少呢?只要查看“控制面板\网络和Internet\网络连接”下的“VMware Network Adapter VMnet8”这块虚拟网卡的IP地址即可,其IP地址也是自动分配的,如图2-27所示。
图2-26
图2-27
192.168.11.1也是VMware自动分配的。此时,就可以和宿主机相互ping通(如果ping Windows没有通,可能是因为Windows中的防火墙开着,可以把它关闭),如图2-28所示。
图2-28
在虚拟机Linux下也可以ping通Windows 7,如图2-29所示。
图2-29
最后,在确保宿主机Windows 7能上网的情况下,虚拟机Linux也可以上网浏览网页了,如图2-30所示。
图2-30
在虚拟机Linux下上网是非常重要的,因为以后安装软件时,很多需要在线安装。
安装完毕虚拟机的Linux操作系统后,我们就要开始使用它了。通常都是在Windows下通过终端工具(比如SecureCRT或SmarTTY)来操作Linux。这里我们使用SecureCRT(下面简称CRT)这个终端工具来连接Linux,然后在CRT窗口下以命令行的方式使用Linux。该工具既可以通过安全加密的网络连接方式(SSH)来连接Linux,也可以通过串口的方式来连接Linux,前者需要知道Linux的IP地址,后者需要知道串口号。除此以外,还能通过Telnet等方式,大家可以在实践中慢慢体会。
虽然CRT的操作界面是命令行方式,但它比Linux自带的字符界面还是更方便,比如CRT可以打开多个终端窗口,可以使用鼠标等。SecureCRT软件是Windows下的软件,可以在网上免费下载。建议使用比较新的版本,笔者使用的版本是64位的SecureCRT8.5和SecureFX8.5,其中SecureCRT表示终端工具本身,SecureFX表示配套的用于相互传输文件的工具。我们通过一个例子来说明如何连接虚拟机Linux,网络模式采用桥接模式,假设虚拟机Linux的IP地址为192.168.11.129。其他模式也类似,只是要连接的虚拟机Linux的IP地址不同而已。使用SecureCRT连接虚拟机Linux的步骤如下:
图2-31
此时出现“New Session Wizard”对话框,如图2-32所示。
在该对话框上,选中SecureCRT protocol:SSH2,然后单击“下一步”按钮,出现向导的第二个对话框。
步骤02 在该对话框出现的向导对话框上输入Hostname为192.168.11.129,Username为root。这个IP地址就是我们前面安装的虚拟机Linux的IP地址,root是Linux的超级用户账户。输入完毕后如图2-33所示。再单击“下一步”按钮,出现向导的第三个对话框。
图2-32
图2-33
步骤03 在该对话框上保持默认即可,即保持SecureFX协议为SFTP,这个SecureFX是宿主机和虚拟机之间传输文件的软件,采用的协议可以是SFTP(安全的FTP传输协议)、FTP、SCP等,如图2-34所示。
再单击“下一步”按钮,出现向导的最后一对话框,该对话框上可以重命名会话的名称,也可以保持默认,即用IP作为会话名称,这里保持默认,如图2-35所示。
图2-34
图2-35
最后单击“完成”按钮。此时可以看到左侧的Session Manager中,出现了我们刚才建立的新的会话,如图2-36所示。
图2-36
双击“192.168.11.129”开始连接,但出现报错,如图2-37所示。
图2-37
前面我们讲到SecureCRT是安全保密的连接,需要安全算法,Ubuntu20.04的SSH所要求的安全算法,SecureCRT默认没有支持,所以报错了。我们可以在SecureCRT主界面上选择菜单“Options/Session Options...”,打开Session Options对话框,在该对话框的左边选择SSH2,然后在右边的“Key exchange”多选框下勾选最后几个算法,即确保全部算法都勾选上,如图2-38所示。
图2-38
最后单击“OK”按钮关闭该对话框。接着回到SecureCRT主界面,并再次双击左边Session Manager中的“192.168.11.129”,尝试再次连接,这次成功了,出现登录框,如图2-39所示。
输入root的Password为123456,并勾选“Save password”,这样不用每次都输入密码,输入完毕后,单击“OK”按钮,出现Linux命令提示符,如图2-40所示。
图2-39
图2-40
这样,在NAT模式下SecureCRT连接虚拟机Linux成功,以后可以通过命令来使用Linux了。如果是桥接模式,只要把前面的步骤的目的IP地址改下即可,这里不再赘述。
有时在Windows下编辑代码,然后传文件到Linux下去编译运行,即需要在宿主机Windows和虚拟机Linux之间传送文件。把文件从Windows传到Linux的方式很多,既有命令行的sz/rz,也有FTP客户端、SecureCRT自带的SecureFX等图形化的工具,读者可以根据习惯和实际情况选择合适的工具。本书使用的是命令行工具SecureFX。
首先我们用SecureCRT连接到Linux,然后单击右上角工具栏的“SecureFX”按钮,如图2-41所示。
图2-41
单击图2-41中框选的图标,启动SecureFX程序,并自动打开Windows和Linux的文件浏览窗口,界面如图2-42所示。
图2-42
在图2-42中,左边是本地Windows的文件浏览窗口,右边是IP地址为120.4.2.80的虚拟机Linux的文件浏览窗口,如果需要把Windows中的某个文件上传到Linux,只需要在左边选中该文件,然后拖放到右边Linux窗口中,从Linux下载文件到Windows也是这样的操作,非常简单。