需求:linux主机上配置免密登录其他服务器
系统环境:centos7 主机A:192.168.149.150 主机B:192.168.149.153
示例:在主机A上配置免密登录主机B
1.主机A上生成密钥
在主机A上执行 ssh-keygen 命令,如下图: 执行后,会在用户的根目录生成一个 “.ssh”的文件夹,如下图: 查看“.ssh”文件下生成的文件:
- id_rsa : 生成的私钥文件
- id_rsa.pub : 生成的公钥文件
2.设置ssh免密登录
免密登录的原理: 主机A免密登录到主机B:
- 在A上生成公钥私钥。
- 将公钥拷贝给server B,要重命名成 authorized_keys
- Server A向Server B发送一个连接请求。
- Server B得到Server A的信息后,在authorized_key中查找,如果有相应的用户名和IP,则随机生成一个字符串,并用Server A的公钥加密,发送给Server A。
- Server A得到Server B发来的消息后,使用私钥进行解密,然后将解密后的字符串发送给Server B。Server B进行和生成的对比,如果一致,则允许免登录。
- 得到server B发来的消息后,会使用私钥进行解析,然后将机密后的字符串发给server B。
- 接收到机密后的字符串会跟先前生成的字符串进行对比,如果一致就允许免密登陆。
主机A要免密码登录到主机B,B首先要拥有A的公钥,然后B要做一次加密验证。对于非对称加密,公钥加密的密文不能公钥解开,只能私钥解开。
将主机A的公钥发给主机B
ssh-copy-id 命令可以把本地主机的公钥复制到远程主机的 authorized_keys 文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。
在主机A上执行命令 ssh-copy-id root@192.168.149.153,如下图: 执行成功后,在主机B(192.168.149.153)上的/root/.ssh/下面会有authorized_keys文件,如下图:
验证
在主机A上登录主机B,可以实现免密登录:
|