由Git的SSH公钥到非对称加密

本文介绍了Git协议中SSH协议的使用,重点讲解了非对称加密的概念,包括公钥和私钥的工作原理,以及如何通过SSH公钥实现无密码登陆。同时阐述了SSH的身份验证机制——数字签名,最后指导了如何生成SSH公钥。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Git协议

Git主要使用四种协议来进行数据的传输:

1)本地传输

2)Git协议

3)SSH协议

4)HTTP协议

其中SSH协议和HTTP协议是最常见的两种协议了。

SSH协议则是唯一同时支持读写操作的协议,很多企业内部在架设Git服务器的时候,都会提供SSH协议来传输数据。

SSH协议的安全性体现在其使用了公钥加密,而其实用性和安全性的另外一个体现,则是提供了公钥登陆的机制。

只要将我们的公钥放上服务器,由Git服务器进行管理,我们就不用每一次推送都要输入密码,方便了我们的推送操作。

在GitLab或者优快云的Code上面,都有一个SSH公钥管理页面,如下:


那么SSH公钥到底是什么,为什么要添加SSH公钥呢,怎么生成SSH公钥呢?

希望能通过这一篇文章,将我理解的学习到的知识跟大家分享一下。

公钥私钥,是非对称加密中的概念,是相对于对称加密而言的。

所谓加密,就是将人人都能看懂的内容变成了莫名奇妙的内容,但是你跟我能够去解读它,而其他人则不行。

这就等于给内容加上了一把锁。

对称加密

而你跟我,手上都有一把钥匙,所以我们都能去打开这把锁,从而看到里面的里容。那么这把钥匙,就是对应的密钥。

比如下面这个例子:

我:wygdlkd pejf ktqn 。
你:。。。
我:五笔!
你:哦!

<think>好的,用户想知道如何在Git中配置SSH公钥。我需要先回忆相关的步骤,确保信息准确。首先,生成SSH密钥对是关键的一步,通常使用ssh-keygen命令。记得提到不同的算法,比如ED25519和RSA,以及他们的适用情况。然后,用户需要将公钥添加到Git服务提供商那里,比如Gitee或GitHub,这部分要说明在账户设置里的具体路径。接下来,测试连接是否成功也很重要,比如用ssh -T命令检查。可能还需要提到配置Git的用户信息,虽然用户没有问,但有时候这是必要的。要引用提供的资料中的内容,比如引用[2]和[3]提到Gitee的配置步骤,引用[4]关于测试连接的部分。还要注意用户可能遇到的常见问题,比如权限问题或者密钥位置不对,需要提醒他们检查。最后,确保步骤清晰,语言简洁,符合用户的需求。</think>### 如何在 Git 中添加和配置 SSH 公钥? #### **步骤 1:生成 SSH 密钥对** 打开终端(如 Git Bash),输入以下命令生成密钥对: ```bash ssh-keygen -t ed25519 -C "your_email@example.com" ``` - `-t ed25519` 表示使用更安全的 ED25519 算法(若系统不支持,可用 `-t rsa -b 4096` 代替) - `-C` 后填写与 Git 账户关联的邮箱 按提示选择密钥保存路径(默认 `~/.ssh/id_ed25519`),建议直接按回车使用默认值 设置密码(可选,可为空) #### **步骤 2:查看并复制公钥** 生成后通过以下命令查看公钥内容: ```bash cat ~/.ssh/id_ed25519.pub ``` 输出类似: ``` ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJlz... your_email@example.com ``` **复制全部内容**(包括开头的 `ssh-ed25519` 和结尾的邮箱)[^5] #### **步骤 3:添加公钥Git 平台** 以 Gitee 为例: 1. 登录后点击右上角「设置」→「安全设置」→「SSH 公钥」→「添加公钥」 2. 标题可自定义(如 `My PC`),将复制的公钥粘贴到「公钥」文本框 3. 点击「确定」完成添加[^3] 其他平台(GitHub/GitLab)操作类似,路径一般为「账户设置→SSH Keys」 #### **步骤 4:测试 SSH 连接** 输入以下命令验证配置: ```bash ssh -T git@gitee.com # Gitee 测试 ssh -T git@github.com # GitHub 测试 ``` 若显示 `Welcome to Gitee, [用户名]!` 或 `You've successfully authenticated` 表示成功[^4] #### **步骤 5:配置 Git 全局信息(可选)** 若未配置过用户信息,需执行: ```bash git config --global user.name "YourName" git config --global user.email "your_email@example.com" ``` --- ### **关键问题说明** 1. **为何需要 SSH 公钥?** SSH 协议通过非对称加密实现安全通信,避免每次操作输入密码[^2] 2. **常见错误处理** - 权限问题:确保 `~/.ssh` 目录权限为 `700`,密钥文件为 `600` - 连接超时:检查网络是否允许 SSH 协议(默认端口 22) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值