[原创] SSH免密登录设置----原理详解

Posted wangdy0707

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[原创] SSH免密登录设置----原理详解相关的知识,希望对你有一定的参考价值。

  首先介绍一下SSH:

  技术分享图片

  当我们用一台服务器登录另一台服务器可直接使用SSH协议进行登陆

//具体格式:
//        ssh  [用户名]@[IP]

ssh [email protected]192.168.33.12

  也可以直接远程传送文件到另一台服务器,具体格式如下:

//具体格式:
//            scp [文件名] [目标服务器用户名]@[目标服务器IP] : [目标复制位置]

scp test.txt [email protected]192.168.33.12:/home

  

  注意:以上操作方法存在弊端,每次操作都需要输入目标服务器的密码,不适合集群服务器的批量操作。所以一般我们会用SSH的第二种身份验证机制:密钥验证。验证流程如下图:

技术分享图片

  即在源服务器上先生成一份公钥和一份密钥,将公钥复制到目标服务器,利用命令将公钥添加至目标服务器的授权列表(authorized_keys)。当有服务器带着公钥申请连接服务器时,目标服务器首先在authorized_keys中查找是否存在该公钥,如果存在则开始进行验证。首先生成一个随机字符串,利用对应公钥进行加密,然后返回给申请连接的服务器,申请连接服务器利用私钥进行解密,再将字符串返回给目标服务器完成验证,进行后续操作。

  首先在源服务器上生成公钥和密钥:

//具体格式:
//    其中  -t  [加密方式]        
                ssh-keygen -t rsa
//默认会在 /root/.ssh/ 重生成公钥和密钥  id_rsa   id_rsa.pub

  如下图:

技术分享图片

  接下来我们需要将源服务器生成的公钥拷贝到目标服务器中并添加至authorized_keys列表中,这两步可以使用一个简便命令进行执行:

//将公钥添加至目标服务器的authorized_keys列表中
//具体格式:
//            ssh-copy-id [目标服务器IP]
    ssh-copy-id 192.168.33.12

  截图如下:

技术分享图片

  我们在目标服务器的 /root/.ssh 文件夹中查看授权列表authorized_keys发现原服务器的公钥已经添加进去:

 技术分享图片

  至此我们已经完成了SSH免密登录的设置,可以再源服务器上进行登录验证,已经不需要再输入密码:

技术分享图片

  同样我们可以在目标服务器上进行同样的设置使两台服务器相互免密登录。

 

以上是关于[原创] SSH免密登录设置----原理详解的主要内容,如果未能解决你的问题,请参考以下文章

Windows ssh 免密登录

SSH免密登录详解

多台服务器-SSH免密登录设置

linux上ssh免密登录原理及实现

原创最强文本编辑型SSH工具VS Code安装Remote SSH到免密登录一步步解析

Linux_185_基于公钥的免密登录原理