[靠谱原创!] SSH免密登录设置----原理详解+具体操作(全国人民看完都懂了!)
首先介绍一下SSH:
当我们用一台服务器登录另一台服务器可直接使用SSH协议进行登陆:
//具体格式: // ssh [用户名]@[IP] ssh wdy@192.168.33.12
也可以直接远程传送文件到另一台服务器,具体格式如下:
//具体格式: // scp [文件名] [目标服务器用户名]@[目标服务器IP] : [目标复制位置] scp test.txt root@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免密登录的设置,可以再源服务器上进行登录验证,已经不需要再输入密码:
同样我们可以在目标服务器上进行同样的设置使两台服务器相互免密登录。