ssh 免密码登录 与 密钥公钥原理讲解
16lz
2021-01-22
前言
由于最近频繁需要登录几个服务器,每次登录都需要输入密码,故相对麻烦。
由于个人服务器用于实验,故对安全性要求不是很高,故想实现ssh免密登录。
通过阅读ssh 公钥私钥认证操作及原理以及ssh公钥登陆。成功实现了自己的需求。
下面来说下讲解公钥密钥的工作原理以及ssh免密登录的实现步骤。
公钥密钥原理概述
在课程计算机基础中,我记得是学过公钥密钥的,公钥和密钥是同时生成的。
公钥用于加密,私钥用于解密。
公钥是很多人可以持有,而密钥只能自己持有。
在ssh中,只需公钥放在服务器A上,那么你就可以通过私钥登录服务器A。
当你连接已放置你公钥服务器A时,服务器A和客户端之间大概存在以下认证流程。
(以下认证流程来自博客:ssh 公钥私钥认证操作及原理)
为了说明方便,以下将使用这些符号。
Ac | 客户端公钥 |
Bc | 客户端密钥 |
As | 服务器公钥 |
Bs | 服务器密钥 |
认证过程分为两个步骤。在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上。
- 会话密钥(session key)生成
- 客户端请求连接服务器,服务器将 As 发送给客户端。
- 服务器生成会话ID(session id),设为 p,发送给客户端。
- 客户端生成会话密钥(session key),设为 q,并计算 r = p xor q。
- 客户端将 r 用 As 进行加密,结果发送给服务器。
- 服务器用 Bs 进行解密,获得 r。
- 服务器进行 r xor p 的运算,获得 q。
- 至此服务器和客户端都知道了会话密钥q,以后的传输都将被 q 加密。
- 认证
- 服务器生成随机数 x,并用 Ac 加密后生成结果 S(x),发送给客户端
- 客户端使用 Bc 解密 S(x) 得到 x
- 客户端计算 q + x 的 md5 值 n(q+x),q为上一步得到的会话密钥
- 服务器计算 q + x 的 md5 值 m(q+x)
- 客户端将 n(q+x) 发送给服务器
- 服务器比较 m(q+x) 和 n(q+x),两者相同则认证成功
ssh免密登录实验步骤
(实验环境:Ubuntu 17)
1.若还没安装ssh服务的同学,请先安装。
sudo apt-get install ssh
更多相关文章
- 如果后台的SVN服务器IP地址更改了,如何修改客户端的连接url呢?
- Linux下各类TCP网络服务器的实现源代码
- Linux下wget下载软件小技巧以及安装jdk、tomcat与ftp服务器
- LINUX下CVS服务器安装及权限简单配置
- linux 服务器间文件传输
- CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL)
- Linux随笔-鸟哥Linux服务器篇学习总结(全)
- 定期清理服务器日志
- LINUX下搭建简单临时的WWW服务器