SSH
免密登录—原理
- 在客户端使用
ssh-keygen
生成一对密钥:公钥+私钥 - 将客户端公钥追加到服务端的
authorized_key
文件中,完成公钥认证操作 - 认证完成后,客户端向服务端发起登录请求,并传递公钥到服务端
- 服务端检索
authorized_key
文件,确认该公钥是否存在 - 如果存在该公钥,则生成随机数
R
,并用公钥来进行加密,生成公钥加密字符串pubKey(R)
- 将公钥加密字符串传递给客户端
- 客户端使用私钥解密公钥加密字符串,得到
R
- 服务端和客户端通信时会产生一个会话
ID(sessionKey)
,用MD5
对R和SessionKey
进行加密,生成摘要(即MD5
加密字符串) - 客户端将生成的
MD5
加密字符串传给服务端 - 服务端同样生成
MD5(R,SessionKey)
加密字符串 - 如果客户端传来的加密字符串等于服务端自身生成的加密字符串,则认证成功
- 此时不用输入密码,即完成建连,可以开始远程执行
shell
命令了
在~/.ssh/
目录下,我们会看到这些文件:
id_rsa // 私钥文件
id_rsa.pub // 公钥文件
authorized_keys // 存放客户端公钥的文件
known_hosts // 确认过公钥指纹的可信服务器列表的文件
config // 指定不同域名使用哪个密钥的配置文件
因为一台机器即能是客户端,又能是服务端,因此同时存在authorized_keys
(在该机器为服务端时使用)和Known_hosts
(在该机器为客户端时使用)。
authorized_keys 别人来找我
Known_hosts 我去找别人的 authorized_keys
SSH
免密登录—实现
1、克隆虚拟机
A、当前克隆节点的信息:
两个用户:
root jiaxuan
jiaxuan jiaxuan
B、查看当前版本
lsb_release -c
现在克隆节点虚拟机里边安装了
- 安装了vim
- SSH服务,
- 安装了expect
- 配置了阿里云apt源
克隆虚拟机节点1、2、3
2、SSH免密登录
- 设置网络