SSH协议与应用

目录

SSH协议简介

公钥与私钥的作用

签名与加密

签名

使用场景一

加密

[Git 服务免密登录配置](#Git 服务免密登录配置)


SSH协议简介

SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中安全地远程登录及传输文件。它通过加密和认证机制,确保通信内容不被窃听、篡改,常见于服务器管理、代码版本控制等场景;

公钥与私钥的作用

当用户需要远程访问某个具体服务时,若密码需通过网络传输,若加密强度不足,可能被中间人攻击窃取,所以引入了公钥 / 私钥体系(非对称加密)
公钥 / 私钥体系特点:

  • 无需传输私钥:认证过程中,客户端仅用私钥对随机数据签名,服务端用公钥验证签名,私钥从未在网络中出现,保障数据传输的安全性;
  • 一次配置,永久免密:适用于服务器管理、代码仓库拉取等需要频繁认证的场景;
  • 私钥可挂失:若私钥泄露,只需删除服务端对应的公钥,无需修改所有相关系统的密码;
  • 私钥签名的唯一性确保身份不可伪造,公钥验签的公开性确保任何人可验证;
    SSH 依赖非对称加密技术,通过一对密钥(公钥和私钥)实现安全认证,两者的关系如下:

签名与加密

签名

签名是一种用于验证数据完整性和发送者身份的技术,基于哈希加密算法实现,其核心作用如下:

  • 证明数据由合法发送者生成(防冒充);
  • 确保数据在传输过程中未被篡改(防篡改);

使用场景一

当用户在ubuntu系统生成私钥id_rsa公钥id_rsa.pub,且将公钥告知 Git 服务器,当用户采用Git提交原始数据时,详细过程如下所述;

签名生成过程:

  1. Git 会自动对ubuntu系统所提交的内容生成一个哈希值(如a1b2c3d4);
  2. 然后用 私钥对哈希值进行加密,得到一个签名(例如encrypted_hash
  3. 当用户提交代码时,Git 会将原始数据和签名一同存储或传输

签名验证过程:

  1. Git 服务器首先采用公钥解密签名,从签名中提取出ubuntu系统提交时加密的哈希值(``a1b2c3d4)
  2. 然后Git 服务器直接对原始数据应用相同的哈希函数,重新生成哈希值(b2假设为a1b2c3d4)
  3. 对比两个哈希值,若一致,则证明数据未被篡改(哈希值相同),数据确实由持有私钥的用户生成(只有持有私钥的用户能加密出可被公钥解密的签名);

加密

加密 是将明文数据通过密钥转换为密文的过程,确保只有授权方能用对应密钥将密文还原为明文,其核心目标是确保数据在传输或存储过程中不被未授权者读取或篡改。因此SSH协议中只有持有对应私钥的人能解密,确保数据传输安全;
加密流程如下:

  1. 发送方获取 接收方的 公钥;
  2. 发送方公钥 加密数据,得到密文;
  3. 接收方用自己的 私钥 解密密文,还原原始数据

Git 服务免密登录配置

步骤一:生成 SSH 密钥对并且查看公钥

ubuntu虚拟机打开终端,输入以下命令生成密钥(无需输入密码可直接按回车跳过)

bash 复制代码
# ssh-keygen: 生成SSH密钥对的工具
# -t rsa:     指定密钥的类型为RSA,RSA是非对称加密算法
# -b 4096:    设置密钥的位数为4096
# -C "email@example.com" : 为密钥添加注释,一般使用邮箱地址作为注释内容

ssh-keygen -t rsa -b 4096 -C "email@example.com"
bash 复制代码
#ubuntu系统查看密钥
cat ~/.ssh/id_rsa.pub 

步骤二:将公钥添加到 Git 服务端

登录 Gitee, 点击设置, 下拉点击安全设置中SSH公钥;

自定义标题名称,粘贴公钥内容,点击确定,输入当前账号的密码即可;

步骤三:配置ubuntu系统的 Git 客户端

基本配置

bash 复制代码
# 设置git客户端的用户名称,自由设置即可
git config --global user.name "shuju"

# 设置git客户端的邮箱,本地记录提交作者的标识,可随意设置,建议使用真实邮箱
git config --global user.email "13361241467@163.com"

# 查看全局配置
git config --global --list

验证连接

首次连接会提示确认指纹,输入 yes 后回车即可;

bash 复制代码
# 连接Gitee服务器,使用固定用户名为git(Gitee强制要求)

ssh -T git@gitee.com

修改仓库地址为 SSH 协议

打开Gitee的某个仓库页面,复制克隆远程仓库的指令,ubuntu本地客户端执行即可;

相关推荐
糖炒栗子032619 分钟前
Windows 生成无密码 SSH 密钥 + Linux 配置公钥
ssh
坚持就完事了29 分钟前
YARN资源管理器
大数据·linux·hadoop·学习
Joseph Cooper1 小时前
Linux regmap 子系统实战:在驱动中 dump PMIC 寄存器定位供电问题
linux·运维·服务器
计算机安禾1 小时前
【Linux从入门到精通】第35篇:容器化技术预备——Docker安装与基本概念
linux·运维·docker
子木HAPPY阳VIP1 小时前
信创UOS,Docker 完整操作部署(Dockerfile部署方式)&排错整合
linux·运维·redis·nginx·docker·容器·tomcat
瞎折腾啥啊1 小时前
vcpkg与CMake
linux·c++·cmake·cmakelists
AOwhisky1 小时前
Kubernetes调度与服务暴露:从“定时任务”到“服务发现”的完全指南
linux·运维·云原生·容器·kubernetes·服务发现
hahaha 1hhh1 小时前
中文乱码 ubuntu autodl
linux·运维·前端
计算机安禾1 小时前
【Linux从入门到精通】第37篇:NFS网络文件系统——无状态的数据共享
linux·网络·php
暴力求解2 小时前
Linux---保存信号
linux·运维·服务器·开发语言·操作系统