在日常使用电脑过程中,Windows下密码忘记的话我们可以通过PE或者DOS下的工具来清除用户密码,那Linux下如果root密码忘记的话我们怎么办?是不是就需要重新安装呢?其实不需要,我们只需要以单用户模式登录即可更改root密码,前提是grub未加密活已知密码。 如果grub加密了单不知道密码或损坏了或者某一配置文件修改出错,系统无法进入,就需要使用rescue模式,即救援模式。 grub是一个启动工具,帮助找到系统的启动盘,从而引导硬盘加载内核。

单用户模式

1、首先,重启系统,在出现以下画面时按↑↓箭头,选择系统内核,按e进入grup界面。 2、进入grup界面之后,找到linux16这一行,修改ro为:

# rw init=/sysroot/bin/sh   //sysroot即原系统

3、修改好之后,按ctrl+x,进入以下界面,但还未进入系统。 4、在光标之后需要输入以下指令,进入系统修改密码:

# chroot /sysroot  //切换系统目录	
#passwd root //修改root密码,可能会显示乱码,课更改语言为英文,输入LANG=en

5、密码改完了,但是还需要额外的一步操作,指令如下:

# touch /.autorelabel

这步操作是为了让SELinux生效,否则修改的密码不会生效,执行之后,ctrl+d,输入reboot命令重启系统,新密码就生效了。

救援模式

用于忘记root密码、grub密码的情况下进行修改root密码,当grub加密时,单用户模式也无法修改root密码,需要在系统救援模式下对grub进行解锁,然后就可以利用单用户模式重新设置root密码。 1、首先检查光驱开机是否启动,具体查看方式是点击VMware右下角光盘小图标,选择“设置”,进入虚拟机设置选项,在启动时连接前面勾上。 2、把CentOS7关机,关机后右击这台虚拟机,选择电源--打开电源时进入固件(BIOS) 3、进入BIOS之后,选择boot,把CD-ROM设为首选启动项,设置好之后保存退出。 4、进入光驱启动界面,选择Troubleshooting进入,之后选择Rescue a CentOS Linux system 之后连续按两次Enter键,进入下图界面: 这里选择第一项,在下方输入1,显示如下界面,初始系统已挂在到/mnt/sysimage下面,如果要进入初始系统,需要执行:

# chroot /mnt/sysimage

之后执行修改root密码的命令passwd。 修改好之后重启,重启之前在bios里修改下首选启动项。


克隆虚拟机

做实验的时需要几台机器,使用克隆功能可以快速copy几台机器出来。 1、首先先关闭正在运行的CentOS,然后右击管理,选择克隆,如下图:

2、默认下一步,直至完成,然后开机克隆好的系统,配置IP防止与之前的系统IP冲突,并删除UUID这一行:

# vi /etc/sysconfig/network-scripts/ifcfg-ens33

重启网络

# systemctl restart network.service

3、为了更好的区分两台CentOS,可以设置主机名,运行以下命令:

# hostnamectl set-hostname zhulinux-01

重启之后即可生效。

四、Linux机器互相登录

ssh默认端口号是 22,如果你没有指定端口号,它直接就是通过 22 端口发送请求的,且默认用户是root。 下面例子中使用的两台ip为:

zhulinux-01:192.168.204.128 zhulinux-02:192.168.204.129

1、普通登陆方式,从01远程登录到02,输入以下:

# ssh 192.168.204.129

# ssh -p 22 root@192.168.204.129  //ssh -p 端口号 用户名@目标IP 

2、使用密钥登录 1、如果从01使用密钥登录到02,首先使用ssh-keygen生成密钥对,公钥需要存放到02当中,私钥存放在01当中。输入指令ssh-keygen,过程中使用默认位置即可,私钥密码可以留空。 在目录/root/.ssh下找到公钥(id_rsa.pub)与私钥(id_rsa) 2、把公钥复制到需要登录的02机上面:

# cat /root/.ssh/id_rsa.pub

把这个内容复制并且粘贴到02机中,在02机中运行命令:

# vi /root/.ssh/authorized_keys

粘贴01机的公钥在期中,:wq保存退出。然后在01上登录02,就无需输入其他密码,直接登录: 5、查看SELinux状态与临时关闭SELinux

# getenforce //查看SELinux状态,Enforcing为打开,Permissive为关闭
# setenforce 0  //临时关闭SELinux