如何在 Linux 上设置 SSH 零敲碎打登录?
Linux SSH 免密登录
本篇我们来 看看 Linux 的免密登录的原理 以及实际操作一番
概述
什么是 Linux SSH 免密登录,我觉得大家应该都 多少听过 或者操作过,那你真的理解整个免密登录的过程吗?
Linux SSH 免密登录 就是 可以不输入密码 就可以通过SSH 远程连接到 服务器了
1.SSH 免密登录原理
通过上面的图解流程 可以大致分为下面几步,A 作为Client端 B作为 Server端
- A -> B A免密登录B
- 在A上生成公钥私钥。
- 将公钥拷贝给server B,要重命名成authorized_keys(从英文名就知道含义了)
- Server A向Server B发送一个连接请求
请求包括 A的 用户名和IP
。 - Server B得到Server A的信息后,
在authorized_key中查找
,如果有相应的用户名和IP,则随机生成一个字符串,并用Server A的公钥加密,发送给Server A
。 - 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"
可以看到 已经生成了 公钥 id_rsa_test.pub 和 私钥 id_rsa_test
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 添加到高速缓存中
2.4 ssh-add 私钥
ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中
注意 私钥的权限一定要是 600 ,否则会报错
,可以通过 chmod 600 ~/.ssh/id_rsa_test 更改
2.5 再次测试登录
可以看到已经成功免密登录了
总结
本篇主要讲解了 Linux SSH 免密登录的原理,以及实际操作了一把 ,注意 本地 私钥的权限一定要是 600 ,否则会报错 无法 ssh-add 进高速缓存中。
欢迎大家访问 个人博客 Johnny小屋
上一篇: 如何轻松实现SSH的无密码登录?
下一篇: 如何解决SSH多因素身份验证问题?