一、开发环境
系统环境
| 系统 | 版本 |
|---|---|
| Windows | 11 |
| Linux | ubuntu-20.04.6-server |

安装过程网上很多,这里就不多介绍
安装好之后,打开虚拟机,输入账号密码登录进去,如下:

二、网络配置
在主机Windows命令行中输入ipconfig /all,记下IPv4地址,子网掩码、DNS服务器
注意虚拟机设置网络类型为桥接网络
回到虚拟机、输入指令ifconfig -a查看网络信息,我这里是enp0s3

输入指令cd /etc/netplan, 然后ls (Centos与ubuntu有点不一样,可以自行上网查询, 如果ubuntu没找到这个文件,可能版本不一样)

network:
version: 2
ethernets:
eth0:
dhcp4: false #禁止dhcp动态分配ip
addresses: [*.*.*.*/子网掩码(16等价于255.255.0.0)] #根据你宿主机的ip和子网掩码,划分一个ip给虚机(保证虚拟机和宿主机在同一网段即可,注意避免ip冲突问题)
gateway4: *.*.*.* #填写宿主机的网关
nameservers:
addresses: [*.*.*.*,*.*.*.*] #填写宿主机的DNS
切记,如果你是在校园网环境下,可能配置不成功,原因有的校园网需要认证。
sudo netplan --debug apply
运行上面指令,重新启动网络,这样就能ping通主机、外网。
可以设置优先ipv4
vim /etc/gai.conf
把其中precedence ::ffff:0:0/96 100取消注释,这样就优先ipv4
三、虚拟机克隆
假设我们需要设置多台虚拟机,如果重新配置就比较麻烦,直接克隆,修改一些配置这样就很快
首先,关闭虚拟机,右击虚拟机选择复制->选择完全复制,等待一段时间就好了
然后启动克隆后的虚拟机,账号密码还是之前的,可以增加用户然后删除之前的用户
删除用户以及它的文件夹sudo userdel -r username
增加用户sudo useradd -r -m -s /bin/bash newname 设置密码sudo passwd newname
修改主机名vim /etc/hostname,变成hadoop2
然后再修改ip就行(注意在同一子网内),其他不需要变,因为是复制过来的
四、多台虚拟机连通
首先,两台虚拟机都打开,检查两天机器是否ping通
但是我们也可以通过主机名进行连接,比较直观
在hadoop1虚拟机上输入指令vim /etc/hosts,设置ip对应主机名172.20.10.9 hadoop2,同样在hadoop2也做这样处理

输入指令ssh hadoop2,首次登录需要确认和密码,然后exit退出返回hadoop1

如果可能是root用户,可能没有权限,编辑 /etc/ssh/sshd_config文件
找到PermitRootLogin,注释掉这一行
添加PermitRootLogin yes,保存,退出
介绍一下双向免密登录
在hadoop1虚拟机通过指令生成.ssh文件夹,生成密钥,将公钥通过scp指令远程拷贝到hadoop2虚拟机的.ssh文件夹中(拷贝前,hadoop2也需要产生.ssh文件夹)
之后,将hadoop1的公钥通过cat指令写道authorized_keys文件中,hadoop2同理
首先,hadoop1输入指令ssh-keygen -t rsa,产生.ssh文件夹,连续按三下回车,采用默认设置
,同理对hadoop2也这么处理。

回到虚拟机hadoop1,输入指令cd /hadoop1/.ssh(就是我自己用户产生的密钥,返回的你产生密钥的用户的.ssh文件,假设你是hadoop2用户,那就是cd /hadoop2/.ssh),然后ls查看目录
拷贝前我们先重命名,与其他虚拟机的密钥区分开,指令cp id_rsa.pub id_rsa_1.pub

输入指令scp id_rsa_1.pub hadoop1@hadoop2:/home/hadoop1/.ssh/,首次输入yes和密码,注意以你的用户为准


同理,把hadoop2产生的公钥,传送到hadoop1虚拟机上。
接着分别在两台虚拟机上将两个公钥写到authorized_keys文件中。
分别输入指令cat id_rsa_1.pub id_rsa_2.pub >> authorized_keys

这样就完成了双向免密登录!