前言
本文利用虚拟机中已有的一台Linux系统,克隆出另一台完全一样的Linux系统,并实现两台虚拟机之间的免密登录。这其中涉及到:防火墙的关闭、本地的域名解析配置、公钥私钥的生成等过程。
一 使用虚拟机克隆Linux系统
1 相关信息
采用系统:Centos7
采用的虚拟机:VMware
2 克隆之前与之后的Linux系统的信息展示
克隆之前的Linux系统信息如下:
主机名 IP地址 免密码登录用户名
linux1 192.168.112.130 root
克隆后的两台 Linux 服务器如下,我们希望能够从其中一台服务器通过 SSH 免密码登录到另一台服务器。
两台服务器的信息如下:
主机名 IP地址 免密码登录用户名
linux1 192.168.112.130 root
linux2 192.168.112.131 root
3 注意事项
两台机器处于同一个网段中
互相通信应该遵循同一个通信协议,这是是ssh,端口号为22
4 克隆的具体操作步骤
第一步:关闭防火墙
steps1:查看防火墙状态:firewall-cmd --state
steps2:关闭防火墙: systemctl stop firewalld.service
steps3: 禁止防火墙开机启动:systemctl disable firewalld.service
steps4: 再次验证防火墙是否关闭
第二步:关机linux1:shutdown -h now
关机原因:在虚拟机中克隆机器的时候需要关闭Linux系统
第三步:在VMware的“我的计算机”中,选中要克隆的Linux系统,右键->管理->克隆
第四步:不断的下一步,遇到下面的两幅图的时候,需要进行修改,分别如下图:
图1
图2
第五步: 显示结果如图:
第六步:修改克隆出来的Linux系统:修改其系统名称以及静态IP地址
steps1: 开机MyTestLinux2
steps2: 修改机器名称:hostnamectl set-hostname linux2
查看机器名称:hostname
steps3: 修改静态IP地址: vim /etc/sysconfig/network-scripts/ifcfg-ens33
steps4: 重启linux2虚拟机。
至此:一台新的机器linux2就克隆好了。
二 SSH免密远程登录具体步骤
第一步:分别在linux1和linux2的虚拟机的家目录下创建一个隐藏的文件夹 .ssh:mkdir ~/.ssh
第二步:分别修改linux1和linux2的hosts文件: vim /etc/hosts
将linux1和linux2的固定IP添加到文件里:如下
该步的作用是:等同于域名解析的作用,如果不配置这一步,我们要想从linux1的服务器连接到linux2的服务器,就需要使用linux2的完整ip地址,如:ssh 192.168.112.131,现在配置了这一步,我们是将linux2和192.168.112.131绑定起来了,现在只需要使用命令: ssh linux2就可以进行登录linux2的服务器了。
第三步:分别在linux1和linux2的~/.ssh文件夹中生成公钥私钥:
以linux1为例:
steps1: 修改.ssh文件夹的权限:cdmod 700 ~/.ssh
steps2: 进入到.ssh文件夹中:cd ~./ssh
steps3: 生成公钥和私钥:ssh-keygen -t rsa ,按下三次回车,终端的显示结果如下图:
此时,.ssh文件夹下会生成两个文件:id_rsa.pub(公钥)、id_rsa(私钥)
steps4:输出公钥内容并且重新输入到~/.ssh/authorized_keys文件中:cat id_rsa.pub>> authorized_keys
steps5:修改authorized_keys文件权限为600: chmod 600 authorized_keys
steps6:将authorized_keys文件远程拷贝到linux2系统中的~/.ssh目录 中:scp authorized_keys root@linux2:~/.ssh
在linux2中,做与上面6步相同的步骤 ,区别在于,在steps6中,应该将authorized_keys文件从linux2拷贝到linux1的~/.ssh文件夹中。
第四步: 验证是否可以免密登录:
在linux1系统中:ssh linux2
在linux2系统中:ssh linux1
如果上述不提示输入密码即可实现远程登录,那么就证明免密登录已经设置完毕了。
如果仍然提示输入密码才能进行远程登录,那么,将两个系统中的~/.ssh文件夹删掉,并重新执行上述步骤,即可。
注意:如果没有配置免密登录,例如,在linux1系统中,直接输入ssh linux2,第一次连接的情况下,需要输入yes,并且在.ssh文件夹中产生一个known_hosts文件。并且此时是需要提供密码的,如下图:
至此:ssh进行免密登录就全部完成了。
需要注意的坑:权限的修改、authorized_keys文件的名称不能出错。
三 ssh远程免密登录的原理性的知识
ssh进行远程免密登录涉及到公钥私钥的相关知识,具体原理性东西太多,请参考以下博客。强烈建议仔细认真的研读该博客,个人认为上面的教程步骤只是表象,我们更应该思考的是:为什么这样做了就能够实现了免密登录??? 知其然知其所以然才是学习应该做的事。
博客链接1:https://blog.csdn.net/weixin_37766087/article/details/100056608
博客标题:一文理解HTTPS原理、数字签名、公钥私钥以及CA证书。
博客链接2:https://blog.csdn.net/weixin_37766087/article/details/100056798
博客标题:HTTPS原理和CA证书申请(满满的干货)