- 实验环境
1) 硬件环境:计算机一台;
2) 软件环境: Win操作系统;
1)VMware安装
下载网站(VMware Workstation Pro16 Windows版本):https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
VMware16密钥(任选一即可):
ZF3R0-FHED2-M80TY-8QYGC-NPKYF
YF390-0HF8P-M81RQ-2DXQE-M2UT6
ZF71R-DMX85-08DQY-8YMNC-PPHV8
VMware15密钥(任选一即可):
YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8
UG5J2-0ME12-M89WY-NPWXX-WQH88
UA5DR-2ZD4H-089FY-6YQ5T-YPRX6
GA590-86Y05-4806Y-X4PEE-ZV8E0
ZF582-0NW5N-H8D2P-0XZEE-Z22VA
YA18K-0WY8P-H85DY-L4NZG-X7RAD
打开VMware-workstation-full-16.1.0-17198959.exe,根据提示将VMware安装在计算机上。
2)CentOS虚拟机的安装
CentOS介绍
CentOS(Community Enterprise Operating System)是Linux的发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。
下载网址(CentOS7/8):https://www.centos.org/download/
- 打开VMware,在“主页”选项卡中选择“创建新的虚拟机”。
-
- 选择 典型->下一步->安装程序光盘映像文件->浏览->选择“CentOS-8.3.2011-x86_64-boot.iso”
-
- 选择版本为CentOS64位(CentOS7/8 版本选择 CentOS 8 64位)
-
- 为虚拟机命名并选择安装位置(新建文件夹用于存放)
-
- 设置最大磁盘大小,设为15.0GB 完成设置后点击“完成”
- 在Vmware中找到新建的虚拟机选项卡,选择 开启此虚拟机
-
- 首次运行见到了CentOS的桌面,打开 Install to Hard Drive进入CentOS Installer
-
- 点击开始按钮,开始安装 begin
按照提示,先设置有感叹号的内容
安装源 设置基础软件仓库时出错 解决办法:
Centos7版本操作(不同版本自行搜索)
Centos8版本 URL选择镜像列表
版本 8
mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/
版本 8.2.2004
mirrors.aliyun.com/centos/8.2.2004/BaseOS/x86_64/os/
版本 8.3.2011(目前最新)
mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os/
- 安装半个小时左右
- 同意许可证
- 使用刚才创建的用户以及对应的口令登录,按照提示进行操作。
- 以上就是 CentOS 8 的安装过程,至此我们已经完成了 CentOS 8 的安装
3)建立三个虚拟机之间的虚拟网络
为实现虚拟机间的网络互通,我们将使用nat方式连接网络
网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
目标:建立三个虚拟机,按照下方表格分配静态并设置host name,当三台虚拟机同时运行时,使得相互之间可以ping通。(注意:具体实验时采取的网段需要根据具体情况,需要参考安装主机的NAT配置情况)
host name |
ip address |
Master |
192.168.224.130 |
slave1 |
192.168.224.201 |
slave2 |
192.168.224.202 |
注:此处的ip地址可以自行规划,此处为示例
- 配置vmware网络,选择编辑->虚拟网络编辑器
点击VNnet8 NAT一行,根据下图设置
子网IP:192.168.224.0
NAT设置:192.168.224.2
点击NAT设置,根据下图设置,注意要确保网关与子网在同一网段(此处意为“192.168.224前三个数字相同”),此外为了和其它网络冲突,虚拟机网关(192.168.224.2)设置没有采用习惯的1或者254网址。此处网址设置请自己查找资料学习关于网络IP设置,网关等方面的知识。
//开始菜单->运行->services.msc或从控制面板中找到“服务”一项打开如下图所示,找到以vmware开头的服务,确保都启用
- 打开虚拟机,运行 终端,并在termial中输入如下命令
-
su
(切换为超级用户,根据提示输入之前设定的密码,密码输入时不可见,输入完回车即可,成功超级用户的标志为$变为#,输入exit即可退出)
TIPS:CentOS中: ctrl+shift+c 复制
ctrl+shift+v 粘贴
关闭防火墙:
systemctl stop firewalld.service
关于防火墙:
关闭:systemctl stop firewalld.service
禁用:systemctl disable firewalld.service
查看状态:systemctl status firewalld.service
关闭SELINUX:
vi /etc/selinux/config
(以vi/vim开头是vi/vim命令,在该命令模式下有相关操作)
SELINUX=enabled 改为 SELINUX=disabled
reboot生效
TIPS:vi/vim命令相关操作:https://www.cnblogs.com/shiyanlou/archive/2017/09/05/7478346.html
i 进入插入模式 可更改内容
esc 退出插入模式
:x 保存并退出
修改hostname:
vim /etc/sysconfig/network
内容改为
NETWORKING=yes
HOSTNAME=master
配置centos网络:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改(或者说是输入)
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
BROADCAST=192.168.224.225
IPADDR=192.168.224.130
NETMASK=255.255.255.0
NETWORK=192.168.224.0
GATEWAY=192.168.224.2
修改hosts映射:
vim /etc/hosts
修改内容为
192.168.224.130 master
192.168.224.201 slave1
192.168.224.202 slave2
重启网络功能:
nmcli c up ens33
nmcli d reapply ens33
nmcli d connect ens33
- 复制两台虚拟机
找到虚拟机保存的目录,直接复制两份虚拟机(先前建立的名为centos的文件夹)重命名为centos1和centos2
打开vmware workstation界面,选择打开虚拟机,并分别打开centos1和centos2,会出现提示警告询问该虚拟机是否是复制过来的,选择是
接下来以slave1为例修改第二台虚拟机,目的是修改ip和host name(由于是复制的虚拟机,此时ip和host name仍然是先前master的,因此要修改为我们所希望的slave1的ip和host name)
su
输入密码
修改ip:
vim /etc/sysconfig/network-scripts/ifconfig-eth0
将IPADDR=后的ip改为192.168.224.201
即
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
BROADCAST=192.168.224.225
IPADDR=192.168.224.201
NETMASK=255.255.255.0
NETWORK=192.168.224.0
GATEWAY=192.168.224.2
修改hostname:
vim /etc/sysconfig/network
修改为
NETWORKING=yes
HOSTNAME=slave1
全部设置完成后重启虚拟机,至此slave1设置完毕
同理设置slave2
将IPADDR=后的ip改为192.168.224.202
HOSTNAME=slave2
这些设置完成后,同时开启三台虚拟机时可以相互ping通
例:su
密码
ping slave2
停止ping操作:ctrl+c
4)实现SSH和RSH互通
1.相关知识介绍
SSH
SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
RSH
RSH是“remote shell”(远程 shell)的缩写,该命令在指定的远程主机上启动一个shell并执行用户在rsh命令行中指定的命令;如果用户没有给出要执行的命令,rsh就用rlogin命令使用户登录到远程机上。
- SSH无密码互访配置
该实验请用root账号操作。
rpm -qa |grep ssh
查看是否安装
- openssh-server-7.4p1-21.el7.x86_64
- openssh-clients-7.4p1-21.el7.x86_64
- openssh-7.4p1-21.el7.x86_64
libssh2-1.8.0-4.el7.x86_64
表示已安装
CentOS已经默认安装了OpenSSH,首先检查ssh服务是否启用
在terminal中输入:
chkconfig --list |grep sshd
若显示
sshd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 则表明未启用
查看状态:
systemctl status sshd.service
启动服务:
systemctl start sshd.service
重启服务:
systemctl restart sshd.service
开机自启:
systemctl enable sshd.service
ssh无密码验证原理:
节点A要实现无密码公钥认证连接到节点B上时,节点A是客户端,节点B是服务端,需要在客户端A上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到服务端B上。当客户端A通过ssh连接服务端B时,服务端B就会生成一个随机数并用客户端A的公钥对随机数进行加密,并发送给客户端A。客户端A收到加密数之后再用私钥进行解密,并将解密数回传给B,B确认解密数无误之后就允许A进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端A公钥复制到B上。
- 令三台虚拟机各自生成密钥对,将各自的公钥传到同一台虚拟机中合并生成key,具体步骤如下:
同时打开三台虚拟机
修改三台虚拟机的ssh配置文件
vim /etc/ssh/sshd_config
找到下列行 去掉注释符号#
RSAAuthentication yes (允许RSA认证)(部分版本可能找不到,可忽略)
PubkeyAuthentication yes (允许公钥认证)
AuthorizedKeysFile .ssh/authorized_keys (公钥存放在.ssh/au..文件中)
修改后需要重启ssh:
systemctl restart sshd.service
分别在三台虚拟机上生成密码对,运行下列命令
ssh-keygen -t rsa
Enter file in which to save the key 选择括号内默认地址:/root/.ssh/id_rsa
(可在默认路径~/.ssh/下生成私钥id_rsa公钥id_rsa.pub,用ls -a 可以查看.ssh目录)
Enter pass phrase:空(直接回车)
将所有虚拟机的公钥传送到一起,目的是生成一个authorized_keys文件,包含所有机器的公钥,不妨将公钥都发送到master上
使用scp命令(用来实现局域网内不同linux系统间传送文件)
scp /root/.ssh/id_rsa.pub root@master:/root/.ssh/id_rsa.pub.slave1
遇到The authenticity of host ‘master (192.168.224.136)‘ can‘t be established.问题
ECDSA key fingerprint is SHA256:cxzUlZGHKASyP+oXCRZXKQd4D/QtVat7QpDdOM+EeoM.
ECDSA key fingerprint is MD5:7a:b5:e1:6d:2f:54:97:dc:cd:60:ad:95:7a:08:0a:0b.
Are you sure you want to continue connecting (yes/no)?
选择yes继续操作
(在slave1上操作时,向master发送公钥,为了不与master的公钥重复,因此在最后加上.slave1作为标识,slave2同理,)
scp便是利用ssh在linux主机间传送文件的命令,若出现Host key verification failed.参照问题汇总
生成authorized_keys:
此时在master的/root/.ssh/ 至少应该有id_rsa.pub.slave1 id_rsa.pub.slave2和id_rsa.pub三个文件
cd ~/.ssh/
cat id_rsa.pub >> authorized_keys
cat id_rsa.pub.slave1 >> authorized_keys
cat id_rsa.pub.slave2 >> authorized_keys
将三个公钥内容添加到同一文件authorized_keys中
查看.ssh的文件 ll ~/.ssh
删除rm /root/.ssh/文件名
此时,拥有该文件的虚拟机可以被另两台虚拟机直接登录,实现了ssh无密码验证互通,将此文件发送给slave1和slave2的/root/.ssh后,使三台虚拟机用root用户可以直接都可相互登录。
scp authorized_keys slave1:/root/.ssh/authorized_keys
scp authorized_keys slave2:/root/.ssh/authorized_keys
此时在master或slave2的terminal中输入ssh slave1,便可以登录slave1
以此类推
若ssh时 用户名未改变,则需修改主机名
修改主机名方法:https://www.linuxidc.com/linux/2017-03/141355.htm
5)使用ssh实现windows主机与linxu虚拟机文件互传
下载安装SSH Secure Shell Client 3.2.9 http://xiazai.zol.com.cn/detail/38/372685.shtml
在实现互传文件之前先要令主机(此处使用windows 7)和虚拟机ping通
在cmd中输入ipconfig查看本机ip,在terminal中输入ifconfig查看虚拟机ip
- 关闭windows防火墙
- 更改虚拟网卡设置 在NAT的连接方式下,要使主机能够ping通虚拟机,需要保证VMnet8虚拟网卡的ip地址和虚拟机的ip地址在同一网段中。打开网络与共享中心,更改适配器设置,找到VMnet8(对应NAT)设置其ipv4属性,将其修改至于虚拟机ip属于同一网段
- 此时主机与虚拟机应当能够相互ping通,打开SSH Secure Shell Client,点击Quick Connect,在Host name中输入虚拟机ip,在User name中输入用户名,点击connect,输入密码,成功登录的标志为显示类似terminal中的输入提示符
- 点击window->New File Transfer进入文件传输界面,左边为本机文件目录,右边为虚拟机的文件目录,可直接拖拽复制
问题汇总
- 安装过程中若弹出如下警告窗口,选择yes
- 关于vim的基本用法,可以在terminal中输入vimtutor习得
注意在虚拟机用vi时从插入模式进入命令模式是使用“Ctrl+C”,然后输入:wq可以存盘退出
- 若出现Host key verification failed
su -
vim etc/ssh/ssh_config 配置该文件
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
该博客内容为计算机组成原理与体系结构课程实验内容 基于老师所给实验手册修改总结 仅为个人学习记录