ssh免密登录

如果饿了就吃,困了就睡,渴了就喝,人生就太无趣了


1 ssh密码登录

ssh使用的非对称加密,非对称加密中有两个密钥:公钥和私钥。公钥由私钥产生,但却无法推算出私钥;公钥加密后的密文,只能通过对应的私钥来解密。
ssh密码登录流程:

在这里插入图片描述

  1. 服务器A服务器B 送登录请求
  2. 服务器B 接收到请求后将公钥发送给服务器A
  3. 服务器A 使用服务器B的公钥对登录密码进行加密生成密文
  4. 服务器A 将密文发送给服务器B
  5. 服务器B 使用私钥将密文解密,获得服务器A输入的密码
  6. 服务器B 校验密码是否合法(此为本机work密码)
  7. 服务器B 返回登录结果给服务器A:成功登录或密码错误

2 中间人攻击

在非对称加密中可以有效保护登录密码不被泄漏,但这是在建立连接到真实服务器的情况下。设想一下,如果拦截者并不监听密码或公钥,而是直接伪装成服务器呢:

在这里插入图片描述

拦截者在获取了服务器B的密码,就可以攻击服务器B了,ssh为了解决这个问题,将问题抛给了用户,如图

在这里插入图片描述

第一次连接一个陌生服务器,会询问发起者是否相信这个主机,发起者输入yes后,将该服务器加到known_hosts文件中,下次连接不在确认。

3 ssh免密登录

如果每次ssh都需要输入密码,非常麻烦,ssh又提供了一个免密方式,公钥登录。

在这里插入图片描述

  1. 服务器A 将公钥发送给服务器B
  2. 服务器B服务器A的公钥写入authorized_keys文件中
  3. 服务器A 发起登陆请求,并将自己的公钥一起发送
  4. 服务器B 将接收到的公钥和authorized_keys进行比对。
  5. 如果有相同的公钥,生成一个随机数R,使用服务器A的公钥对随机数R进行加密,生成pubKey(R)
  6. 服务器BpubKey(R)发送给服务器A
  7. 服务器A 使用私钥 对pubKey(R)进行解密,得到随机数R
  8. 服务器ARSessionKey(每个会话的唯一密钥)使用MD5进行加密,生成Digest1
  9. 服务器ADigest1 发送给服务器B
  10. 服务器B 同样把随机数RSessionKey使用MD5进行加密,生成Digest2
  11. 服务器B 比较Digest1Digest2是否相同,相同则登录成功。

4 具体操作

4.1 服务器A生成密钥对

执行下面的命令,一路回车即可

ssh-keygen

在这里插入图片描述

4.2 将公钥写入authorized_keys文件

cd ~/.ssh
touch authorized_keys
cat id_rsa.pub >> authorized_keys

4.3 将authorized_keys发送给服务器B

scp authorized_keys root@you_ip

4.4 验证免密登录

在服务器A ssh连接服务器B,如图

在这里插入图片描述

参考博客

https://www.cnblogs.com/276815076/p/10449354.html
https://www.cnblogs.com/shireenlee4testing/p/10366061.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值