目录

前言

一 使用虚拟机克隆Linux系统

1 相关信息

2 克隆之前与之后的Linux系统的信息展示

3 注意事项

4 克隆的具体操作步骤

二 SSH免密远程登录具体步骤

三 ssh远程免密登录的原理性的知识


前言

本文利用虚拟机中已有的一台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 克隆的具体操作步骤

第一步:关闭防火墙

firewall-cmd --state 

                   

centos8 配置ssh免密登录 centos设置ssh免密登录_Linux

systemctl stop firewalld.service 

systemctl disable firewalld.service

              steps4: 再次验证防火墙是否关闭

                    

centos8 配置ssh免密登录 centos设置ssh免密登录_Linux_02

第二步:关机linux1:shutdown -h now

关机原因:在虚拟机中克隆机器的时候需要关闭Linux系统

第三步:在VMware的“我的计算机”中,选中要克隆的Linux系统,右键->管理->克隆

                      

centos8 配置ssh免密登录 centos设置ssh免密登录_centos8 配置ssh免密登录_03

第四步:不断的下一步,遇到下面的两幅图的时候,需要进行修改,分别如下图:

图1

                                            

centos8 配置ssh免密登录 centos设置ssh免密登录_远程免密登录_04

图2

                                            

centos8 配置ssh免密登录 centos设置ssh免密登录_linux_05

第五步: 显示结果如图:

                                         

centos8 配置ssh免密登录 centos设置ssh免密登录_Linux_06

第六步:修改克隆出来的Linux系统:修改其系统名称以及静态IP地址

           steps1: 开机MyTestLinux2

hostnamectl set-hostname linux2

hostname

                 

centos8 配置ssh免密登录 centos设置ssh免密登录_centos8 配置ssh免密登录_07

vim /etc/sysconfig/network-scripts/ifcfg-ens33

                  

centos8 配置ssh免密登录 centos设置ssh免密登录_linux_08

          steps4: 重启linux2虚拟机。

至此:一台新的机器linux2就克隆好了。

 

二 SSH免密远程登录具体步骤

第一步:分别在linux1和linux2的虚拟机的家目录下创建一个隐藏的文件夹 .ssh:mkdir ~/.ssh

第二步:分别修改linux1和linux2的hosts文件: vim /etc/hosts

将linux1和linux2的固定IP添加到文件里:如下

                         

centos8 配置ssh免密登录 centos设置ssh免密登录_centos8 配置ssh免密登录_09

该步的作用是:等同于域名解析的作用,如果不配置这一步,我们要想从linux1的服务器连接到linux2的服务器,就需要使用linux2的完整ip地址,如:ssh 192.168.112.131,现在配置了这一步,我们是将linux2和192.168.112.131绑定起来了,现在只需要使用命令: ssh linux2就可以进行登录linux2的服务器了。

第三步:分别在linux1和linux2的~/.ssh文件夹中生成公钥私钥:

以linux1为例:

cdmod 700 ~/.ssh  

cd ~./ssh

ssh-keygen -t rsa

                                      

centos8 配置ssh免密登录 centos设置ssh免密登录_SSH_10

                  此时,.ssh文件夹下会生成两个文件:id_rsa.pub(公钥)、id_rsa(私钥)

cat id_rsa.pub>> authorized_keys

chmod 600 authorized_keys

scp authorized_keys root@linux2:~/.ssh

                             

centos8 配置ssh免密登录 centos设置ssh免密登录_SSH_11

在linux2中,做与上面6步相同的步骤 ,区别在于,在steps6中,应该将authorized_keys文件从linux2拷贝到linux1的~/.ssh文件夹中。

第四步: 验证是否可以免密登录:

在linux1系统中:ssh linux2 

在linux2系统中:ssh linux1

如果上述不提示输入密码即可实现远程登录,那么就证明免密登录已经设置完毕了。

如果仍然提示输入密码才能进行远程登录,那么,将两个系统中的~/.ssh文件夹删掉,并重新执行上述步骤,即可。

注意:如果没有配置免密登录,例如,在linux1系统中,直接输入ssh linux2,第一次连接的情况下,需要输入yes,并且在.ssh文件夹中产生一个known_hosts文件。并且此时是需要提供密码的,如下图:

                    

centos8 配置ssh免密登录 centos设置ssh免密登录_Linux_12

至此:ssh进行免密登录就全部完成了。

需要注意的坑:权限的修改、authorized_keys文件的名称不能出错。

 

三 ssh远程免密登录的原理性的知识

ssh进行远程免密登录涉及到公钥私钥的相关知识,具体原理性东西太多,请参考以下博客。强烈建议仔细认真的研读该博客,个人认为上面的教程步骤只是表象,我们更应该思考的是:为什么这样做了就能够实现了免密登录??? 知其然知其所以然才是学习应该做的事。