【SSH登录原理解析及免密登录实操】

1.什么是SSH?

解释:Secure Shell(安全外壳协议,简称SSH)是⼀种加密的⽹络传输协议,只是⼀种协议,存在多种实现,有商业版的也有开源实现的,OpenSSH就是开源实现它将客户端与服务端之间的消息通过加密保护起来。

准备:两台linux服务器,或虚拟机环境也可以。

2.SSH解析流程

(1)远程主机收到⽤户的登录请求,把⾃⼰的公钥发给⽤户。
(2)⽤户使⽤这个公钥,将登录密码加密后,发送回来。
(3)远程主机⽤⾃⼰的私钥,解密登录密码,如果密码正确,就同意⽤户登录。

3.首次登录&再次登录

(1)第一次登录服务器B向服务器A发送公钥(指纹)
在这里插入图片描述
(2)退出后第二次尝试远程登录(不在需要发送公钥,直接通过已存在的公钥进行加密)
在这里插入图片描述
过程:
a) 登录A主机通过ssh命令远程链接B
b) A-B发送远程链接请求,B收到登录请求将秘钥(指纹)返回给A(红框内)
c) A主机输入密码,将密码通过公钥加密后发送给B主机进行登录验证
d) 登录成功

4.SSH免密登录远程Linux云主机流程解析

*使⽤密码登录,每次都必须输⼊密码,⾮常麻烦, SSH还提供了公钥登录,可以省去输⼊密码的步骤。
*流程:
1)所谓“公钥登录”,原理就是⽤户将⾃⼰的公钥储存在远程主机上;
2)登录的时候,远程主机会向⽤户发送⼀段随机字符串;
3)⽤户⽤⾃⼰的私钥加密后,再发回来;
4)远程主机⽤事先储存的公钥进⾏解密,如果成功,就证明⽤户是可信的,直接允许登录shell,不再要 求密码要求⽤户必须提供⾃⼰的公钥。如果没有现成的,可以直接⽤下⾯的命令⽣成⼀个 ssh-keygen;
5)最多的应⽤案例: Git 代码仓库管理通信。

5.SSH登录远程主机实操

1)什么是know_hosts文件?
解释:A通过ssh⾸次连接到B,B会将公钥1(host key)传递给A,A将公钥1存⼊known_hosts⽂件中。即SSH会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts,当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告 避免受到DNS,Hijack之类的攻击。

2)验证know_hosts文件内是否存在B服务器的公钥数据
输入命令:cat ~/.ssh/known_hosts
在这里插入图片描述
前缀是b服务主机IP地址。

3)测试:直接本地修改本地对应的的 “公钥串”,再次ssh远程登录B主机。

*修改后秘钥
在这里插入图片描述
*再次登录
在这里插入图片描述

B主机发现公钥不正确重新发送公钥(不同版本效果不同有些版本提示秘钥错误“Host key verification failed”)。

解决办法:
⽅式⼀:删除A的known_hosts⽂件中记录的B的公钥
⽅式⼆:清空本地host主机配置 echo “” >~/.ssh/known_hosts
⽅式三:修改配置⽂件,在ssh登陆时不通过known_hosts⽂件进⾏验证(安全性有所降低需重启机器)

6.SSH 免密登录远程主机实操

1) 本地⽣成秘钥串命令ssh-keygen
运⾏结束以后,在$HOME/.ssh/⽬录下,会新⽣成两个⽂件id_rsa.pub 和 id_rsa, 前者是你的公钥,后者是你的私钥将公钥传送到远程主机host上⾯,从此你再登录,就不需要输⼊密码了。
在这里插入图片描述
id_rsa.pub 公钥

在这里插入图片描述

2)远端主机(B主机)
远程主机将⽤户的公钥,保存在登录后的⽤户主⽬录的$HOME/.ssh/authorized_keys⽂件中公钥就是⼀段字符串,只要把它追加在authorized_keys⽂件的末尾就⾏了。

将公钥放入到B主机authorized_keys文件中
在这里插入图片描述

在这里插入图片描述
3)验证
从A主机ssh远程登录B主机,直接登录成功,无需输入密码。

本篇博文也到此结束了,希望能给您带来一定参考,如有错误望指出,互相学习,感谢支持!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值