在日常使用电脑过程中,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