SSH免密访问与安全验证

ssh的两种验证方式

  1. 基于口令的验证方式
  2. 基于密钥的验证方式

下面我们主要看基于密钥的验证方式:
当两台机器(A机器、B机器)需要通过ssh 密钥模式通信时,首先我们要在两台机器中生成密钥,这个密钥是成对生成的即一个是公钥一个是私钥。其中公钥提供给需要免密通信的机器,私钥用来做验证。

生成密钥

生成密钥的命令:
ssh-keygen


拷贝密钥

将生成的密钥拷贝到B机器中,有如下的两种方式
  1. scp命令:scp  file  xx.xx.xx.xx:/**
  2. ssh-copy-id命令:  ssh-copy-id xx.xx.xx.xx
使用ssh-copy-id的好处,该命令会直接将公钥放到指定机器的authorized_keys文件中。如下图所示:

A机器中的公钥



B机器授权列表中A的公钥


对比发现,只要执行 ssh-copy-id **.**.**.** 即可将公钥拷贝到目标机器的authorized_keys文件中。

我们再在B机器上将同样的操作执行一遍,将B机器中生成的公钥拷贝到A机器中,这样我们就可以在A和B机器之间做免密访问。

这是我们从A机器登陆B机器就不用再输入密码了


           此时当A向B通信时,B是怎么确认数据是来自A呢,毕竟公钥是没法做唯一的判断的,比如C拿到A的公钥,C向B通信B怎么判断呢?下面一步一步地来解释一下:

  1. A向B通信时,会同时发送A的公钥和数据。
  2. B接收到公钥时,先去查询授权列表即查询authorized_keys文件
  3. B在authorized_keys文件中查询到相同的公钥时,B将使用这个公钥加密一个随机字符串,并发送给A
  4. A收到加密后的字符串后要使用私钥做解密的操作,得到原始的字符串(C是没有私钥的,无法做解密)并在此发送给B
  5. B将收到的字符串和本地保存的字符串做比较,相同,则证明A是合法的。
  6. B就可以处理A发送来的数据。

至此,A向B的一次完整免密通信就算结束了。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值