HTTP (HyperText Transfer Protocol)
- 定义:应用层协议,用于通过Web传输数据(如网页、文件)
- 默认端口:80
- 机制:客户端发送Get请求,服务器返回文件或数据流,基于请求-响应模型
- 安全性:数据明文传输,容易被窃听和篡改
- 下载性能:无加密,传输速度最快,适合大文件下载
HTTPS (HTTP Secure)
- https是http的加密版本,使用TLS/SSL加密通信
- 默认端口:443
- 机制:同HTTP一样,但是通过TLS/SSL加密,确保数据不被拦截或篡改
- 安全性:数据加密,防止中间人攻击,服务器通过TLS证书验证身份
- 下载性能:加密增加少量开销(TLS握手),速度略慢于HTTP
SSH (Secure Shell)
- 安全协议,用于远程登陆、命令执行和文件传输
- 默认端口:22
- 机制:通过加密回话传输文件,支持SCP/SFTP或Git协议,基于持久连接
- 安全性:数据全程加密,使用公钥/私钥认证
- 下载性能:适合小文件或高安全性场景
三者区别对比
特性 | HTTP | HTTPS | SSH |
---|---|---|---|
加密性 | 无加密,明文传输,易被拦截 | TLS/SSL 加密,安全 | 默认加密(RSA/Ed25519),安全 |
端口 | 80 | 443 | 22 |
认证方式 | 无或用户名/密码、Token | 同 HTTP,另需服务器 TLS 证书 | 密码或公钥/私钥认证 |
下载场景 | 公开文件、网页内容 | 安全文件下载、API、Git 仓库 | 远程文件、Git 仓库、服务器管理 |
Git 下载 | HTTPS URL,需凭证 | HTTPS URL,需凭证 | SSH URL,密钥认证 |
速度 | 快(无加密开销) | 略慢(加密开销) | 较慢(加密和会话开销) |
工具 | 浏览器、curl、wget | 浏览器、curl、wget | scp、sftp、Git |
连接模型 | 请求-响应,无状态 | 请求-响应,无状态 | 会话式,双向通信 |
适用性 | 公开资源下载 | 安全下载、API 调用 | 私有资源、需认证的下载 |
使用ssh-keygen生成密钥对
- 简介
- ssh-keygen是Openssh提供的命令工具,用于生成和管理ssh密钥对,包含
- 私钥:保密,存储在本地(如~/.ssh/id_rsa)
- 公钥:可分享,添加到远程服务器或服务(如:~/.ssh/id_rsa.pub)
- ssh-keygen是Openssh提供的命令工具,用于生成和管理ssh密钥对,包含
- 前提要求
- 系统要求
- Linux/macOS:通常预装OpenSSH(验证:ssh-keygen –version)
- Windows:使用Git bash、PowerShell(Windows10/11内置OpenSSH)或WSL
- 安装OpenSSH(如果未安装)
- Linux:
sudo apt install opens-client
(Debian/Ubuntu)或sudo yum install opens-clients
(CentOS) - macOS:
brew install openssh
- Windows:启用"OpenSSH客户端"或安装
Git for Windows
- Linux:
- 终端基础:熟悉命令行操作即可
- 系统要求
生成密钥对
1、打开终端(Linux/macOS终端,windows的Git bash或PowerShell)
2、执行以下命令
|
|
3、提示输入保存路径,如下所示(一般默认即可,直接回车)
|
|
4、设置密码
|
|
5、确认生成
|
|
如果是一路回车选择默认操作,那么公钥和私钥所在路径如下
|
|
其他算法
- Ed25519(推荐,现代且高效),操作如下
|
|
- ECDSA,操作如下
|
|
- 推荐:优先 Ed25519,若需兼容性用 RSA(4096 位)
将公钥添加到Github
1、登陆Github,进入 Settings > SSH and GPG keys > New SSH key
2、粘贴公钥,设置标题(如 “MyKey”),点击 Add SSH key即可
3、测试联通性,执行以下命令
|
|
会输出以下内容
|
|
如果出现以下内容,敲yes回车即可
|
|
将公钥复制到远程服务器
执行以下命令
|
|
测试联通性,执行以下命令
|
|