安全外壳协议-ssh


简介(from wiki)

安全外壳协议(Secure Shell Protocol,简称ssh)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接;SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。

相关文件

SSH服务会在系统的用户目录下生成一个.ssh文件夹,文件夹下一般会有如下文件:

  • config: 配置文件,可以为远程主机配置host、登录端口、默认登录用户等,方便用户使用;
  • known_hosts: 记录本机访问过的服务端所提供的host key,下次访问相同主机时会核对host key,如不匹配会发出警告;
  • id_rsa: 保存本机的私钥
  • id_rsa.pub: 保存本机的公钥
  • authorized_keys: 本机作为服务端所保存的已授权客户端的公钥

非对称加密

SSH有密码登录和证书登录两种认证方式,都是以非对称加密实现身份验证。不同于对称加密的加密解密使用同一套密钥的方式,非对称加密拥有公钥和私钥两套密钥,其中 公钥负责加密,私钥负责解密 ,公钥加密后的密文只能通过对应的私钥进行解密,而通过公钥几乎不可能推算出私钥。另外提一下,数字签名一类是使用私钥编码、公钥解码的,但是这种方式只能称为编解码而不能称作加密解密,因为公钥是公开的,拥有公钥者都可以通过密文解码出明文,加密的意义就不存在。

密码登陆的验证过程

  1. 客户端向远程服务端发出登录请求,服务端把自己的公钥发给客户端;
  2. 客户端本机使用服务端提供的公钥对密码进行加密,并把密文发送至服务端;
  3. 服务端接收密文并使用私钥把密文解密出密码;
  4. 服务端通过密码验证用户身份并返回登录结果;

证书登陆的验证过程

  1. 客户端事先生成本机的公钥和私钥,并把公钥追加到服务端主机的authorized_keys文件中;
  2. 客户端发出登录请求,服务端在authorized_keys中匹配该客户端对应的公钥;
  3. 服务端生成随机数,并使用客户端的公钥进行加密,然后把密文发送给客户端;
  4. 客户端通过本机私钥解密密文获得随机数;
  5. 客户端利用随机数和会话密钥session key通过MD5生成摘要Digest,并发送给服务端;
  6. 服务端使用同样的算法生成另一份Digest;
  7. 服务端对比生成的Digest和客户端发送过来的Digest,返回登录结果;

文章作者: 思考猫
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 思考猫 !
评论
 上一篇
Domain generalization Domain generalization
本篇文章是对文章Generalizing to Unseen Domains: A Survey onDomain Generalization的研读介绍,旨在对域泛化(domain generalization)领域研究现状有粗略了解,考
2022-10-28
下一篇 
常用Linux命令整理 常用Linux命令整理
在服务器上训练深度学习模型时不可避免地需要进行大量的命令行操作,熟练使用命令行已经成为了一项程序员必备的技能,本文对常用的linux命令进行整理,以加深印象和方便后续查询。
2022-10-18
  目录