前言
github的设置中提供 ssh key 和 GPG key 两种认证方式,分别是什么?有什么用?
此文对两者分别做个简介并对比
SSH密钥
SSH是什么?
SSH(Secure Shell)是一种用于远程登录和安全文件传输的协议。它允许用户在计算机之间建立加密连接,以便安全地执行命令、传输文件和管理远程系统。
SSH密钥是什么?
SSH密钥是一对密钥,包括公钥和私钥。公钥用于远程服务器验证用户身份,而私钥保留在用户本地,用于解密加密的数据。
ssh 密钥遵循 OpenSSH 标准格式,支持 RSA、DSA、ECDSA 和 ED25519等加密算法。
用途
- SSH主要用于远程登录和管理计算机系统。
- 它还用于安全文件传输和隧道连接,以便安全地传输数据。
- SSH用于在网络上安全地执行命令、传输文件和远程操作计算机。
生成 ssh 密钥对
(通常windows/linux/macOS都有自带生成工具)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh 密钥示例:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDfyH/ovD08BTXQL38lnbj8+7v+
...
/XUhttfKFpJlnN+j2HN1ePz2q/rWpGV1EucKf5IJhv4Ej6
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEApv7kgoXvX0oPbr53E9iSmGc2DpFgVx98qbHh03FA4v1ohKG
...
d0wksf5eB4XIs6NNnvQhD/axusEx2XljE0jR1KK5Ec7D9dGSm6P5h8yE5p
-----END RSA PRIVATE KEY-----
GPG密钥
GPG是什么?
GPG(GNU Privacy Guard)是一款开源工具,用于数据加密、数字签名和安全通信。它广泛用于加密电子邮件、验证文件的完整性以及创建数字签名。
PS:GPG 是作为对 PGP 的开源替代品而创建的,它在设计上与PGP兼容。简单的说,PGP 早期有专有许可协议,后面出现了开源版本及OpenPGP开放标准,而 GPG 是基于此的完全开源实现。
GPG 密钥是什么?
GPG密钥也是一对密钥,包括公钥和私钥。公钥用于加密和验证签名,而私钥用于解密和创建签名。
GPG 密钥遵循 OpenPGP 标准格式,支持的算法有:非对称加密算法(RSA、DSA、ECDSA 和 ED25519等),对称加密算法(AES、CAST5、3DES等),哈希算法(SHA-1、SHA-256、SHA-512等)。
用途
- GPG用于数据加密、数字签名、安全通信和文件加密。
- 主要用于保护消息的隐私和完整性,例如加密电子邮件和验证文件的真实性
生成 GPG 密钥对
(一般需要自行安装,官方下载地址:https://gnupg.org/download/)
gpg --gen-key
GPG 密钥示例
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQGNBF+LpwoBDADp4u9v5bWfGvRt0Fi1n8gqx8Z3wtt1MsF70DCvqKV7mBSmYpK7
...
sDQs=
=7Y7Q
-----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP PRIVATE KEY BLOCK-----
lQO+BFRONRYBCACaKV7mBSmYpK7gGXojN1ePz2q/rWpGV1EucKf5IJhv4Ej6lQl/
...
cgcEMQjbT4Ch6nFpFj7g/6PAlfuEnes2yc8u9P/4m3H7yqYHKOL7RSFk9EqbPPk
=IejR
-----END PGP PRIVATE KEY BLOCK-----
两者对比
- SSH主要用于远程登录、安全文件传输、隧道连接和管理计算机系统,GPG用于保护消息的隐私和完整性,例如加密电子邮件和文件签名;
- 包括公钥和私钥,公钥用于加密数据和验证签名,私钥用于解密数据和创建数字签名;
- SSH密钥遵循OpenSSH格式,GPG密钥遵循OpenPGP格式
- 都可采用RSA等算法实现生成密钥对