Linux免密登录

为什么需要设置免密登录?

1.当我们在一台主机上登录到另一台主机上时, 使用ssh node13命令时, Linux会提示是否建立连接, 还需要输入密码. 还有各种各样的提示.
2.当我们使用scp /path/filename node13:’/path’远程拷贝一个文件到另Linux主机上时, 也会让你输入各种密码, 是否连接的提示.
3.当我们使用hbase, nginx, hadoop搭集群的时候, 文件的大量存储, 各主机之间的通行, 会频繁的相互访问, 如果每次都是要输入密码, yes未免太不人性化的.
登录到另一台主机上
在这里插入图片描述

一.前期准备工作

为了方便后面的免密登录配置我们先做一下前期的准备工作
这里我们使用三台虚拟主机, Centor Os6.5版本
ip和主机名分别为:
192.168.80.201 node11
192.168.80.202 node12
192.168.80.203 node13

  1. 按如下设置将三台Linux主机上的使用命令vim /etc/hosts文件修改
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200108110858196.png
    这样设置的目的是为了后面的不用写一大串的ip地址, 只需使用node12, node13这种方式就可以访问指定的ip地址主机, 这和win系统中的修改C:\Windows\System32\drivers\etc\HOSTS文件是一样, 都是将ip映射到一个字符串上. 通过字符串和ip地址的产生映射

二.免密登录操作

  1. 使用命令生成秘钥, 在node11,node12,node13三台主机都执行
ssh-keygen  -t  dsa  -P  ''  -f   ~/.ssh/id_dsa

将会到根目录中生成一个.ssh的隐藏文件夹可以使用ll -a显示出来
在这里插入图片描述

  1. 进入.ssh文件夹中会有三个文件

在这里插入图片描述

cat  ~/.ssh/id_dsa.pub  >>  ~/.ssh/authorized_keys

使用如上命令将id_dsa.pub公钥信息添加到authorized_keys文件中, 该文件夹中会多出来一个文件
在这里插入图片描述
可以查看authorized_keys文件信息, 此时将node11的公钥信息添加到了authorized_keys文件中
各文件的作用:

authorized_keys		//授权文件, 所有的主机的公钥信信息都会添加到这个文件中
id_dsa			//私钥
id_dsa.pub			//这台主机的公钥
known_hosts			//主机的信息

  1. 将authorized_keys文件远程拷贝到node12中的/root/.ssh/文件夹中
scp  ~/.ssh/authorized_keys   node12:/root/.ssh/			//在node11上执行

node12中已经收到了authorized_keys文件
在这里插入图片描述

cat  ~/.ssh/id_dsa.pub  >>  ~/.ssh/authorized_keys             在node12上执行

使用如上命令, 将node12主机上的公钥信息追加到authorized_keys文件中. 这样authorized_keys文件中就保存了两台主机公钥信息, 可使用cat authorized_keys查看
在这里插入图片描述
此时我们可以node11主机上使用ssh node12命令登录node12主机, 发现不用输入密码即可登录
此时node11免密登录node12访问成功
在这里插入图片描述
但是不能从node11免密登录node13主机, 因为node13上没有node11的公钥信息

  1. 下面我们配置node13的免密登录

在node12上执行下面命令, 将authorized_keys拷贝到node13主机上

scp  ~/.ssh/authorized_keys   node13:/root/.ssh/          //在node12上执行
  1. 在node13上将自己的的公钥追加到authorized_keys文件中
cat  ~/.ssh/id_dsa.pub  >>  ~/.ssh/authorized_keys

使用cat authorized_keys查看
在这里插入图片描述
这样node13上的authorized_keys文件中就包含了3台主机的公钥. 现在我们只能从node11访问node13
但node13不能访问到node11, 应为node11上没有node13的公钥信息, 所有我们将node11和node12上的authorized_keys文件覆盖包含三台主机的公钥信息.

  1. 以下命令在node13上执行, 配置node13访问其他主机
scp  ~/.ssh/authorized_keys   node11:/root/.ssh/
scp  ~/.ssh/authorized_keys   node12:/root/.ssh/

这样我就可以在三台主机上相互免密访问.

三.免密登录的实现原理

  1. 两台服务器A和B, 如果A想访问B, 那么需要在A上生成公钥私钥.
  2. 将A的公钥复制给B, 需需要重命名为authorized_keys
  3. A向B发送一个链接请求
  4. B得到了这个请求, 会先到authorized_keys中查找, 如果找到了相应的用户名和ip, 就会随机生成一个字符串 并用A的公钥进行加密, 发送给A
  5. A得到这个信息后, 使用私钥解密, 再将解密后的字符发送给B, B进行核对, 相同就允许免密登录
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值