Linux SSH 免密登录

本篇我们来 看看 Linux 的免密登录的原理 以及实际操作一番

image-20220518202242969

概述

什么是 Linux SSH 免密登录,我觉得大家应该都 多少听过 或者操作过,那你真的理解整个免密登录的过程吗?

Linux SSH 免密登录 就是 可以不输入密码 就可以通过SSH 远程连接到 服务器了

1.SSH 免密登录原理

image-20220518200218509

通过上面的图解流程 可以大致分为下面几步,A 作为Client端 B作为 Server端

  1. A -> B A免密登录B
  2. 在A上生成公钥私钥。
  3. 将公钥拷贝给server B,要重命名成authorized_keys(从英文名就知道含义了)
  4. Server A向Server B发送一个连接请求 请求包括 A的 用户名和IP
  5. Server B得到Server A的信息后,在authorized_key中查找,如果有相应的用户名和IP,则随机生成一个字符串,并用Server A的公钥加密,发送给Server A
  6. Server A得到Server B发来的消息后,使用私钥进行解密,然后将解密后的字符串发送给Server B。Server B进行和生成的对比,如果一致,则允许免登录。

2.SSH 免密登录实验

假设我有一台服务器 它的 ip 是 139.198.189.160 ,我现在想通过 本机进行免密登录这台机器

2.1 生成公钥私钥

-f 指定文件 -t 类型 -C 指定邮箱

ssh-keygen -t rsa -f ~/.ssh/id_rsa_test   -C "zhangqiang@163.com"

image-20220518201238480

可以看到 已经生成了 公钥 id_rsa_test.pub 和 私钥 id_rsa_test

image-20220518201314849

2.2 把公钥copy到 服务器 ~/.ssh/authorized_keys

可以追加到 ~/.ssh/authorized_keys 文件的最后面

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQD5jfom6Qts6tjpOAZwde2tWK9/MrKqCKgOd4Y/YILVD4nnvhs2X15N0VyWyZrVrqrUpyG7l3jEspbQxJHNJ9k80NbJqW5EyRernXCpoFICmUnfJnu3VYyBxyKxa1wa7/1xNKq3EEdVGmR2rcajVljfyo4ErPP6NrTbxCa0Do9mmXh2XiEdvrTogSud1c1c/+d7WOwiosD++y9ZxErwZkqBvxfimMTjfsrxTvZ8CIdhAS2THZeuVtFgpxS3TVdt1oXw/BOYsE8kjgZCZ/g0Sbm7w4ZHhKqvO+3q3tSarZyUnkEpeHLWztoH7GUaDjJrqrImlwubt9dzhlV446uefYXxq7WBVKbrGkhSkGN6pKp5xnSkQw0zGAPzieSslvd+0LLPGJ0uIqSq9h5TVGDMVcN2NmASBPB/e4jYzUBTr6hvhvRWPq7HoGSBUoeLYtQiNjUxc8SVSBkofJEoydsTzwlP8/yqBp4mGqyZgSRoBRALflXpCkNBa1HNiRujazxFsSU= zhangqiang@163.com
2.3 测试登录

此时发现 它还是需要我们输入密码 这是为什么呢?因为这时候 你的 私钥还没有 ssh-add 添加到高速缓存中

image-20220518201616952

2.4 ssh-add 私钥

ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中

image-20220518201746505

注意 私钥的权限一定要是 600 ,否则会报错 ,可以通过 chmod 600 ~/.ssh/id_rsa_test 更改

image-20220518201912573

2.5 再次测试登录

可以看到已经成功免密登录了

image-20220518201956879

总结

本篇主要讲解了 Linux SSH 免密登录的原理,以及实际操作了一把 ,注意 本地 私钥的权限一定要是 600 ,否则会报错 无法 ssh-add 进高速缓存中。

欢迎大家访问 个人博客 Johnny小屋

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐