【linux】linux上ssh免密登录原理及实现步骤

最近搭建集群过程中,阅读了此文章,对ssh的解释透彻易懂,对原理不熟悉的朋友推荐一看。

原理部分转自下面链接的部分内容

linux上ssh免密登录原理及实现

十分详细的原理阐述,如果对ssh的实现原理感兴趣可以看一下原文。本文只针对linux命令实现相关的部分做讨论。

1 SSH免密登录原理

如果不熟悉免密登录,可以先看2的部分,先自己配一遍免密登录,再来看该部分则会豁然开朗。

我们已经掌握如何使用ssh登录远程服务器了,但是每次登录都要输入密码,比较麻烦。ssh提供一种免密登录的方式:公钥登录。
在这里插入图片描述

  1. 在客户端使用ssh-keygen生成一对密钥:公钥+私钥
  2. 将客户端公钥追加到服务端的authorized_key文件中,完成公钥认证操作
  3. 认证完成后,客户端向服务端发起登录请求,并传递公钥到服务端
  4. 服务端检索authorized_key文件,确认该公钥是否存在
  5. 如果存在该公钥,则生成随机数R,并用公钥来进行加密,生成公钥加密字符串pubKey(R)
  6. 将公钥加密字符串传递给客户端
  7. 客户端使用私钥解密公钥加密字符串,得到R
  8. 服务端和客户端通信时会产生一个会话ID(sessionKey),用MD5R和SessionKey进行加密,生成摘要(即MD5加密字符串)
  9. 客户端将生成的MD5加密字符串传给服务端
  10. 服务端同样生成MD5(R,SessionKey)加密字符串
  11. 如果客户端传来的加密字符串等于服务端自身生成的加密字符串,则认证成功
  12. 此时不用输入密码,即完成建连,可以开始远程执行shell命令了

2 Linux实现

客户端test1aaa用户 免密访问 服务器test2bbb用户

为了更清晰的查看
带上了命令的执行用户及服务器名称

1 生成用户的私钥与公钥(对应原理1)

[aaa@test1 ~]# ssh-keygen
# 此过程中需要输入三个参数,但三个参数均允许为空,故此过程中只需要三次回车即可。
# 执行结束后,当前用户家目录下回生成一个隐藏文件 .ssh
# 查看一下该文件下内容,发现其中有 id_rsa 和 id_rsa.pub 两个文件
[aaa@test1 ~]# ll .ssh

2 将客户端的公钥发送给服务器(对应原理2)

[aaa@test1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub bbb@test2

也可以简写为

# 在test2上以bbb用户免密访问
ssh-copy-id bbb@test2
# 或者,在test2上以aaa用户免密访问
ssh-copy-id test2

命令执行后,会提示

bbb@test2’s password:

输入bbb的用户密码后回车,即完成了公钥的分发。

3 尝试以通过ssh以bbb用户访问test2(对应原理3-12)

[aaa@test1 ~]# ssh bbb@test2
Last login: Wed Apr 27 16:43:08 2022 from 192.168.37.1
[bbb@test2 ~]$

此过程未提示输入密码,且成功跳转到了bbb用户访问的test2,表示成功完成了免密登录。
(此时免密登录已经配置成功,后面内容只为理解原理做辅助。)
转到bbb用户的家目录下的.ssh文件夹

[bbb@test2 ~]$ cd ~/.ssh/
[bbb@test2 .ssh]$ ll

发现该目录下有authorized_keys文件(若多个客户端向bbb的test2服务器配置了免密登录,还会有known_hosts文件),查看该文件。

[bbb@test2 .ssh]$ cat authorized_keys

即可发现,该文件内容格式为

ssh-加密算法 客户端公钥 客户端用户名@客户端主机名

如果有配置多台免密登录的客户端,则有对应数量的如上格式内容。

到此为止,关于ssh免密登录,linux直接暴露表面的部分已经结束。本文介绍的只是最简单的免密登录配置,能满足一般的生产需要。但其中的命令都还有继续深挖的空间,感兴趣可以自己深入搜索学习。

  • 1
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

今晚不吃烧烤

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值