Linux实现ssh免密登录

ssh免密登录的原理:

  • 通过ssh的命令,我们可以生成公钥:id_rsa.pub 和 私钥:id_rsa
  • 我们将用户(A)的公钥拷贝到需要免密登录的用户(B)上的 authorized_keys 文件内;
  • 在我们进行免密登录时,用户B在接收到用户A的连接请求时,用户B会在 authorized_keys 中寻找对应的用户A的公钥信息,找到之后随机生成字符串并用用户A的公钥信息进行加密并发送回用户A;
  • 用户A接收到信加密信息后通过私钥进行解密后将该字符串再发送给用户B;
  • 用户B对比两个字符串是否相同,如果相同即可免密登录。

ssh免密登录操作步骤

1.创建两个Linux虚拟机并完成网络连接(可以相互ping通)或者找到两个可以相互ping通的Linux主机;
以下以两台ip地址为:192.168.97.128 和192.168.97.129的Linux虚拟机 master 和 slave1 为例,实现 master 的 groot 用户免密登录 slave1 的 groot 用户;

2.通过 “ssh-keygen -t rsa -P ” 命令分别在master 和slave1 的groot用户上创建公钥和私钥,执行之后通过命令 “cd ~/.ssh” 和命令 “ls”查看 .ssh文件夹、公钥和私钥是否创建成功;

ssh-keygen -t rsa -P
cd ~/.ssh
ls

p.s.执行命令时遇到

Enter file in which to save the key (/home/goot/.ssh/id_rsa):

直接回车即可,秘钥生成地点默认为 :/home/goot/.ssh/id_rsa

3.创建成功后,通过

scp ~/.ssh/id_rsa.pub groot@192.168.97.129:~/.ssh/x.pub

命令将 master的 groot用户的公钥发送给 slave1的 groot用户

4.通过

cat ~/.ssh/x.pub >> ~/.ssh/authorized_keys

命令将x.pub中groot@master的公钥信息复制到文件authorized_keys文件中;

5.※注意:查看authorized_keys的权限,如果不为600,则通过

chmod 600 authorized_keys

将该文件的权限修改为600。

6.在groot@master用户上输入

ssh 192.168.97.129

如果得到以下结果:
这里写图片描述
则证明免密登录已经成功。

注意事项:

1.以上步骤是建立在Linux已经搭载ssh功能的基础之上,如果Linux没有ssh功能,可以在联网状态下执行以下代码进行在线安装ssh:

yum -y install openssh-clients

2.解释步骤3中为什么要将groot@master的公钥复制到groot@slave1的.ssh文件夹下的新建文件x.pub中:
目的是为了防止直接复制到.ssh文件夹下,groot@master的公钥会覆盖groot@slave1的公钥,导致groot@slave1无法再免密登录其他用户。

3.重点注意 authorized_keys 文件的权限,必须为600,否则无法免密操作。

你可能感兴趣的:(Linux基本操作)