前言

由于最近频繁需要登录几个服务器,每次登录都需要输入密码,故相对麻烦。

由于个人服务器用于实验,故对安全性要求不是很高,故想实现ssh免密登录。

通过阅读ssh 公钥私钥认证操作及原理以及ssh公钥登陆。成功实现了自己的需求。

下面来说下讲解公钥密钥的工作原理以及ssh免密登录的实现步骤。

公钥密钥原理概述

在课程计算机基础中,我记得是学过公钥密钥的,公钥和密钥是同时生成的。

公钥用于加密,私钥用于解密。

公钥是很多人可以持有,而密钥只能自己持有。

在ssh中,只需公钥放在服务器A上,那么你就可以通过私钥登录服务器A。

当你连接已放置你公钥服务器A时,服务器A和客户端之间大概存在以下认证流程。

以下认证流程来自博客:ssh 公钥私钥认证操作及原理)

为了说明方便,以下将使用这些符号。

Ac 客户端公钥
Bc 客户端密钥
As 服务器公钥
Bs 服务器密钥


认证过程分为两个步骤。在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上。

  1. 会话密钥(session key)生成
    1. 客户端请求连接服务器,服务器将 As 发送给客户端。
    2. 服务器生成会话ID(session id),设为 p,发送给客户端。
    3. 客户端生成会话密钥(session key),设为 q,并计算 r = p xor q。
    4. 客户端将 r 用 As 进行加密,结果发送给服务器。
    5. 服务器用 Bs 进行解密,获得 r。
    6. 服务器进行 r xor p 的运算,获得 q。
    7. 至此服务器和客户端都知道了会话密钥q,以后的传输都将被 q 加密。
  2. 认证
    1. 服务器生成随机数 x,并用 Ac 加密后生成结果 S(x),发送给客户端
    2. 客户端使用 Bc 解密 S(x) 得到 x
    3. 客户端计算 q + x 的 md5 值 n(q+x),q为上一步得到的会话密钥
    4. 服务器计算 q + x 的 md5 值 m(q+x)
    5. 客户端将 n(q+x) 发送给服务器
    6. 服务器比较 m(q+x) 和 n(q+x),两者相同则认证成功

ssh免密登录实验步骤

实验环境:Ubuntu 17

1.若还没安装ssh服务的同学,请先安装。

sudo apt-get install ssh

更多相关文章

  1. 如果后台的SVN服务器IP地址更改了,如何修改客户端的连接url呢?
  2. Linux下各类TCP网络服务器的实现源代码
  3. Linux下wget下载软件小技巧以及安装jdk、tomcat与ftp服务器
  4. LINUX下CVS服务器安装及权限简单配置
  5. linux 服务器间文件传输
  6. CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL)
  7. Linux随笔-鸟哥Linux服务器篇学习总结(全)
  8. 定期清理服务器日志
  9. LINUX下搭建简单临时的WWW服务器

随机推荐

  1. Android中View的滑动
  2. Android 使用ORMLite打造万能泛型Dao简化
  3. 1.Android(了解Android王国)
  4. Service和Activity通讯的3种常用方式示例
  5. android tab和listiew
  6. Android(安卓)自动检测版本并升级
  7. android中资源整理
  8. Android(安卓)架构组件(一)——Lifecycle
  9. Afinal框架(简介)
  10. 属性资源与Android命名空间