Linux下配置ssh免密登录
最近在模拟hpc测试环境,需要配置免密登录,过程记录如下
1,配置主机名映射关系,把所有需要互通的主机都加入
编辑/etc/hosts
文件
2,生成密钥对,包含公钥和私钥
ssh-keygen -t rsa -N "" -f /root/.ssh/id_rsa
3,把公钥传到其他服务器
ssh-copy-id -i /root/.ssh/id_rsa.pub hostname
完成上述三步,只能实现单向登录。双向登录,需要在所有服务器上执行上述步骤。
上述过程实现了root用户的互信,如果需要其他用户互信,那么生成的密钥就必须在/home/user/.ssh/
下
4,查看公钥,在 authorized_keys
文件中包含了所有的主机公钥。
5,测试免密登录
免密登录原理如下,图片来自于网络
图解,server A免登录到server B:
1,在A上生成公钥私钥。
2,将公钥拷贝给server B,使用ssh-copy-id -i 会自动追加到authorized_keys文件中。
3,Server A向Server B发送一个连接请求。
4,Server B得到ServerA的信息后,在authorized_key中查找,如果有相应的用户名和IP,则随机生成一个字符串,并用ServerA的公钥加密,发送给Server A。
5,Server A得到ServerB发来的消息后,使用私钥进行解密,然后将解密后的字符串发送给Server B。Server B进行和生成的对比,如果一致,则允许免登录。
6,得到server B发来的消息后,会使用私钥进行解析,然后将机密后的字符串发给server B。
7,接收到机密后的字符串会跟先前生成的字符串进行对比,如果一致就允许免密登陆,反之亦然。