樱花客栈

SSH加密概念

SSH = Secure Shell
一种安全加密网络传输协议


加密基础

对称加密

发送方和接收方都使用同一个密钥

发送方:明文+密钥 -> 密文
接收方:密文+密钥 -> 明文

加密算法:
AES(高级加密标准,Advanced Encryption Standard):目前最常用的加密算法(AES-128、AES-192、AES-256),SSH传输数据时会使用AES加密
DES(数据加密标准,Data Encryption Standard):早期加密标准,密钥长度短(56位)

非对称加密

非对称加密使用一对密钥:公钥Public key和私钥Private Key
公钥用于加密,私钥用于解密,公钥加密的数据只能用私钥解密

发送方:使用接收方的公钥Pub进行加密
接收方:使用自己的私钥Private进行解密

加密算法:
RSA(Rivest-Shamir-Adleman):基于大整数因子分解难题(常见密钥长度 2048、4096 位)
ECDSA(椭圆曲线数字签名算法):基于椭圆曲线离散对数问题,密钥短但同等安全
Ed25519:更快、更安全的椭圆曲线签名算法,SSH 默认使用

哈希加密

哈希是一种单向函数,用于计算固定长度的明文值,确保数据完整性。
哈希值 = hash(明文)

  • 不可逆(无法从哈希值计算明文)
  • 抗碰撞(难以找到一种 hash(明文1)=hash(明文2))
  • 输入敏感(哪怕明文只改动1比特,哈希值也会大幅变化)

加密算法:
SHA-256  / SHA-3:广泛用于安全协议,如 TLS、SSH
MD5(消息摘要算法):不安全,不用于加密传输,可用于验证传输信息完整性


SSH认证

固定密码📚或密钥对🔑登陆SSH服务器,弱强度的固定密码有被暴力破解的可能。

  1. 固定密码登陆方式:客户端通过ssh命令向ssh服务器发送登陆请求;服务器向客户端协商密钥用于构建加密通信通道;加密通道建立后,服务器向客户端索要登陆密码,并与服务器上存储的密码比对;密码校验通过后,服务器允许客户端访问Shell。
服务器协商,对称密钥SHA-256
  1. 密钥对的登陆方式包括公钥和私钥概念,公钥即可以公开的密钥,私钥只有在本地存储才安全。
密钥对方式登陆

密钥存储

  1. 本机公钥信息存储在文件:~/.ssh/authorized_keys
    公钥通常的内容是(加密类型+公钥文+域):
ssh-ed25519 AAAAAAAAAAC1yc2EAAAADAQABAAACAQDRxHaAqjB5LcvNGMuB/W9vL2sfbfvl8CKgkZUT9041MCtV9j== hi@ziyuan.work
  1. ~/.ssh/ 目录还会存放服务器的公钥和私钥文件,通常是.pem.pub.pem文件,文件格式为PEM(Privacy-Enhanced Mail)

.pem私钥文件内容(私钥文):

-----BEGIN RSA PRIVATE KEY-----
AB3NzaC1yc2EAAAADAQABAAABgQDlZICl9XYz0yovhi4ajYlyDfHL5tNt2jmX/Js0I7c+Heqb3ExzOd+Td0aYVruMQkYsulXsQfe/wzQ145OppbeFRkZATKIOkb/DcN2YvTH+YtjO/GJPtdT5WVA6I/3a+pd2AgcXVh
-----END OPENSSH PRIVATE KEY-----

.pem.pub公钥文件内容(加密类型+公钥文+域):

ssh-rsa CCxrInV8Dgij2vuufsw4iLF/05hg2L9rNHdwaQx6vSDZKgjw2VPzWxCufJeKMEZbKh9a4m7D1rMPN7Z1rS6E10/vTFD2OJgbpi8eM1TondTlxVa8BZ0roXLuYCpue/CyqOoYfm74fgmAbTKWUzg86jCVL9ngn66UQsW+AtgBX00d3XZ1oJ1lL9lvlyJwE6NXIMy3f9F5dJ0RZmqXtKLBeAR+SD+lD7sPug6O/nYpEzK5BVDFGwFYtjO/GJPtdT5 hi@ziyuan.work
  1. 密钥生成

使用ssh-keygen命令可以生成私钥和公钥

ssh-keygen -t rsa -b 4096 -m PEM -f mykey.pem

# 运行以上命令会在文件夹中得到mykey.pemmykey.pem.pub文件,移动文件到~/.ssh目录

# -t 加密算法,可以有rsa dsa ed25519 ecdsa
# -b 密钥位数(bit),当-t 为rsa和ecdsa时有效
# -m 密钥格式,可以有PEM OPENSSH PKCS8
# -f 文件名,通常为xxxxx.pem
  1. 使用ssh-copy-id命令可以将公钥发送给服务器,实现密钥对登陆
ssh-copy-id user@192.168.1.10 

# user:远程主机用户
# 192.168.1.10:远程主机IP

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注