首页 > 其他分享 >SSH 原理及应用

SSH 原理及应用

时间:2022-11-24 10:56:50浏览次数:49  
标签:公钥 加密 私钥 rsa SSH 应用 原理 客户端 密钥

一、SSH 简介

SSH 是 Secure Shell 的简称,也称安全外壳协议。主要目的是实现安全远程登陆。

二、SSH 工作原理

对数据的加密方式主要有两种:

  1. 对称加密(密钥加密)(AES、DES)
  2. 非对称加密(公钥加密)(RSA、DSA)

对称加密

对称加密指加密解密使用的是同一个密钥。

  • 优点:速度快,对称加密通常在消息发送方需要加密大量数据时使用;算法公开,计算量小,加密效率高。
  • 缺点:非安全信道中通信时,密钥交换不安全;需要保存的密钥数量增多,不便于管理。

非对称加密

由一对密钥由公钥和私钥组成,公钥私钥可以互相加密解密。

  • 优点:只交换公钥保证了私钥不外泄。
  • 缺点:速度较慢。

SSH 工作原理中,使用了RSA非对称加密算法。

1. SSH初次交换公钥

  1. 客户端发起链接请求
  2. 服务端返回自己的公钥及会话ID
  3. 客户端生成密钥对
  4. 客户端用自己的公钥异或会话ID,计算出Res,并用服务端的公钥加密
  5. 客户端发送加密后的值到服务端,服务端用私钥解密得到Res
  6. 服务端用解密后得到的值异或会话ID,计算出客户端的公钥
  7. 最终:双方各自持有3个密钥,自己的一对密钥和对方的公钥

2. SSH 加密原理

3. SSH 服务登录的常用验证方法

  • 用户/口令
  • 密钥

基于用户/口令的登录验证

  1. 客户端与服务器交换公钥。
  2. 客户端利用服务器的公钥对登录密码加密,发送登录请求到服务器。
  3. 服务器用私钥解密得到登录密码,密码正确则登录成功。

基于密钥的登录验证

  1. 在客户端生成一对密钥。
  2. 将公钥拷贝到服务器。
  3. 当客户端再次发送连接请求,包括 IP、用户名。
  4. 服务器得到请求后,在authorized_keys中查找,如果有响应的IP和用户,则生成一个随机字符串。
  5. 服务器使用拷贝过来的公钥加密随机字符串,发送给客户端。
  6. 得到从服务端发送的数据,客户端用私钥解密,将解密后的字符串发给服务器。
  7. 服务器接收来自客户端的字符串后,与之前的字符串对比,如果一致,就允许免密码登录。

 

5. 使用 openssh 生成密钥对

生成密钥对: ssh-keygen -t rsa -b 4096 -P "" -C "root@ubuntu" -f id_rsa

参数 说明
-t 密钥类型,rsa | dsa,默认为 rsa。
-m 编码格式,rfc-4716 | pkcs8 | pem,默认为 pem。
-b 密钥长度,RSA最小要求768位,默认为2048位;DSA必须是1024位。
-P 提供旧的私钥密码,空则表示不需要密码。
-N 提供新的私钥密码,空则表示不需要密码。
-C 提供备注,默认为当前用户名@主机名
-f 生成密钥的文件路径,默认为 id_rsa(私钥)id_rsa.pub(公钥)

自动上传公钥: ssh-copy-id -i id_rsa.pub username@host

  • 拷贝公钥到服务端~/.ssh目录下,并更名为 authorized_keys或在追后一行增加公钥
  • -i可指定公钥文件,默认为id_rsa.pub

重启服务器ssh服务:systemctl restart sshd

客户端通过ssh命令远程登录服务器:ssh -i id_rsa username@host

  • -i可指定私钥文件,默认为id_rsa

标签:公钥,加密,私钥,rsa,SSH,应用,原理,客户端,密钥
From: https://www.cnblogs.com/-ori/p/16918719.html

相关文章