一、Linux远程SSH登录之密钥认证
1.1、putty远程登录密钥认证
putty密钥认证,首先需要用到putty密钥生成工具(PUTTYGEN.EXE)。然后是该工具的使用界面如图:
1、Generate 生成密钥
2、Parameters 密钥类型相关参数
感兴趣的话可以修改Parameters 密钥类型相关参数,默认值已经满足需求了。点击Generate生成后会出现如下画面:
注:鼠标要在当前对话框晃动才能加快密钥的生成,否则密钥创建会很慢,甚至不生成创建。
当密钥生成创建完成以后会给出如下画面:
1、Pubic key for pasting into OpenSSH authorized_keys file:
粘贴到OpenSSH authorized_keys文件的公开密钥
2、Key fingerprint 密钥相关信息(根本没什么修改的)
3、Key comment 定义密钥名称,便于区分
4、Key passphrase 给当前密钥设置密码
5、Confim passphrase 确认密钥的密码
6、Generate a public/private key pair 生成一个公钥/私钥对 (这里生成过了,可以重新生成)
7、Load an existing private key file 加载一个现有的私钥文件
8、保存生成的公/私钥 Save public key(保存公钥)Save private key (保存私钥)
这里需要给3、Key comment设置名称,也可以保持默认。建议要给4、Key passphrase设置密码,5、Confim passphrase在确认一下设置的密码。选择保存公钥或私钥比较安全的路径并定义名称。
现在已经有了一对公私钥,就要把公钥复制到Linux了。但是不小心把Puttygen.exe关闭了找不到公钥了怎么办?有两种方法可以找到生成的公私钥。具体如下:
重新打开Puttygen.exe如图:
1、Load an existing private key file 加载一个现有的私钥文件
会弹出刚才保存的密钥存放窗口找到公钥或私钥文件(保存公钥是没有文件后缀名的,可以使用记事本打开。保存的私钥是以.ppk后缀名结尾的,也是可以直接使用记事本打开)。当你完成以后会提示输入密钥密码如下图,如果忘记密码,也没关系重新生成即可。
接下来就能看到公钥了,如图:
接下来使用Putty.exe远程连接Linux并完成以下操作;
mkdir /root/.ssh #在root家目录下创建一个.ssh目录,这个目录默认不存在的。
chmod 700 /root/.ssh #更改这个目录的权限
vi /root/.ssh/authorized_keys #使用vi编辑器把公钥内容粘贴到/root/.ssh/authorized_keys文件内。
完成以后按下键盘左上角"Esc"键从编辑模式到命令模式,输入:wq回车确认即可完成
到这里还并未完成,还要关闭SELinux,SELinux是CentOS的一种安全机制,如果不关闭SELinux,使用密钥认证登录的时候会给出错误提示“server refused our key”,从而导致登录失败,运行命令如下:
sed -i 's#SELINUX=enforcing#SELINUX=disabled#' /etc/selinx/config #这里使用sed把/etc/selinux/conf配置文件内容的SELINUX=enforcing替换成SELINUX=disabled,保障每次系统重启SELinux不会开启。重启才能生效。
setenfoce Permissive #不管系统是否重启SELinux当前都是处于关闭状态
设置Putty通过密钥远程Linux
打开Putty.exe按照图示来操作
1、选中需要使用远程Linux使用密钥验证的服务器
2、加载选中Linux服务器配置信息
3、选中SSH 选项
4、选中Auth选项
5、选中私钥文件路径
6、选中私钥文件
7、打开
8、Session 会话
9、Save 保存
10、Open 打开
输入密钥的密码完成密钥验证,就不需要root密码登录Linux了。
1.2 Xshell远程连接Linux之密钥验证
打开Xshell,选择工具—用户密钥管理者如图:
以上就是Xshell生成密钥的步骤,与Puttygen.exe类似
接下来把Xshell生成的公钥粘贴到/root/.ssh/authorized_keys文件内。如图:
圈颜色部分是Putty远程公钥,第一行做备注(做备注可以使用中文,便于区别公钥);前提一定要是以#号开头。
断开Xshell连接,然后修改连接信息如图:
确定之后双击修改的连接 输入账号之后如图:
二、单用户、救援模式之忘记root密码
2.1、单用户模式
单用户模式是没有网络服务的,就不能远程操作了。这里就以虚拟机为例来进入系统的单用户模式。进入单用户模式就需要重启Linux系统,重启命令如下:
reboot #立即重启
shutdown -r now #立即重启
shutdown -r +1 #一分钟以后重启
init 6 #切换Linux的运行级别6 运行级别6表示重启。此命令的作用就是重启
圈红的意思是:使用方向键 ↑ 或 ↓键做出选择,按下键盘'e'键编辑选中的选项,或者按下键盘'c'键进入命令提示行模式。默认3秒帮你自动选择默认选项。
出现上述画面按下方向键 ‘↑’ 或 ‘↓’键,不让系统3秒帮你做出选择。选择第一项在按下'e'键进入系统编辑模式如图:
需要使用方向键 '↓' 向下翻找到以linux16开始的行,如图:
移动光标到 ro rhgb quiet LANG=en_US.UTF-8处 把'ro'改成'rw init=/sysroot/bin/bash' 如图:
根据提示按下 'Ctrl+x' 键开始启动单用户模式。等待几秒钟就出现下图
注意:这个系统不是安装在服务器硬盘的真实Linux系统,只是加载在内存的虚拟系统。修改root密码就需要加载安装在服务器硬盘内的Linux系统。
需要执行chroot /sysroot/ 命令来挂载安装在服务器硬盘内真正的Linux操作系统。如图:
到这里就可以使用命令 passwd来修改root密码,如图:
密码已经修改成功,这里就需要从服务器硬盘里的Linux系统登出(Crlt+d;exit;logout 三个命令任意一个都可以)执行重启命令(reboot;init 0;shutdown -r now)。
注:之前已经把/etc/selinux/config配置文件内的SELINUX=enforcing改为SELINUX=disabled的话,就不需要执行 touch /.autorelabel
没有处理SELinux开机关闭的操作,就必须执行 touch /.autorelabel 操作才能使修改的密码生效。
如果不确定的话,建议还是执行一下 touch /.autorelabel
重启完成出现登录界面,就可以使用新设置的密码登录了。
2.2 救援模式
如果GRUP加密了,不能使用单用户模式,那就要用到安装系统时光盘、U盘的救援模式。以虚拟机演示,关闭虚拟机,编辑虚拟机配置(选中需要使用救援的虚拟机右键-设置)如图:
把CD-ROM Drive按键盘"+"号调整到第一位后如图:
之后自动重启,并以光盘启动(和初装系统同样画面)如图:
到这步剩下的修改root密码和单用户模式一样,这里就不在演示了。修改完毕记要设置虚拟机硬件光驱开机不连接。如图:
三、虚拟机克隆
虚拟机在克隆前要处于关闭状态,选中需要克隆的虚拟机名称鼠标右击-管理-克隆,如图:
启动克隆的虚拟机并做某些必要的设定,如图示:
1、重启网络服务;2、查看ip地址;3测试虚拟机能否上网
为了变越区分主机,修改Linux主机名:
hostnamectl set-hosname linux-202
vi /etc/hostname
#以上两条命令都可以修改主机名,任选一条即可。
把另一台Linux主机名也用同样方法修改,这里就不演示了。
四、两台Linux相互登录
在演示两台Linux相互登录前,不得不提一下关于命令行前面的内容说明:
[root@linux_201 ~]# 解释说明:[用户名@主机名 工作目录]#
[root@linux_202 ~]#
上面除了主机名不同其它信息相同,其中'~'表示用户的家目录,#表示为超级管理员命令提示符;后面会遇到$开始的命令提示符,$表示为普通用户的命令提示符。
Xshell连接两台Linux主机任意一台,执行如下图:
ssh的客户端都支持密钥认证,在Linux上也是支持密钥登录具体操作如下图:
1、ssh-keygen 生成公、私钥的工具
2、询问是否更改私钥存放路径,不更改的话使用的路径为(/root/.ssh/id_rsa)
3、给私钥设置密码 4、再次确认私钥的密码
圈红部分告诉你的公、私钥存放路径 ,其中id_rsa是私钥需要保存在本机的,id_rsa.pub是公钥需要复制到被远程的Linux服务器上
查看生成的公钥并复制到粘贴板,如图:
然后断开Linux_202主机,回到Linux_201主机上执行 logout 命令即可,并使用vi编辑器编辑/root/.ssh/authorized_keys文件如图:
完成后按下'Esc'键,输入:wq 可以测试使用linux_202主机远程连接Linux_201主机测试,如下图
ssh是Linux下的远程工具
ssh远程的必要的4个条件
主机名或ip | 用户 | 密码 | port(端口) |
192.168.8.201 | root | ****** | 默认 22 |
在Linux远程时可以 缩写为 ssh 192.168.8.201
正常应该使用 ssh user@ip或主机名 -p 指定端口 为什么简写了,因为在当前Linux系统下命令行前面都会有用户信息[root@linux_22 ~]# 所以 ssh 192.168.8.201 就会以root账号去连接。-p是指定修改ssh服务端口是才使用,不加-p都是以22端口连接。