Git Push 失败?手把手教你配置 SSH Key,实现无痛推送代码

前言

你是否还在为github无法执行git push而苦恼,就算输入了用户密码,仍然显示Error in the HTTP2 framing layer,将你打回原型,今天给大家分享一些基本操作,如何生成配置SSH key,让自己的服务器可以无痛推送代码

动手解决

在这里插入图片描述

### 第一步:在服务器上生成 SSH 密钥

复制并执行这条命令:

ssh-keygen -t ed25519 -C"[email protected]"

显然,邮箱要替换成你自己的邮箱,这是一个注释信息,你的这个邮箱会作为公钥的一部分以明文的方式放到公钥里,所以如果你这里以服务器的用户名加ip命名,将是非常不安全的,社区里一般提倡“用户@邮箱” 这种,你看你喜欢,我这里直接放邮箱了。

执行过程中的提示和你的操作

提示 1:保存位置
Generating public/private ed25519 key pair. Enter file in which to save the key (/root/.ssh/id_ed25519): 

你的操作: 直接按 回车(使用默认路径)


提示 2:设置密码短语(可选)
Enter passphrase (empty for no passphrase): 

你的选择:

选项 A:不设置密码(推荐用于服务器自动化部署)

  • 直接按 回车
  • 优点:推送代码时不需要输入密码
  • 缺点:如果服务器被入侵,私钥可直接使用

选项 B:设置密码(推荐用于个人电脑)

  • 输入一个密码(比如:MySecurePassword123
  • 回车
  • 优点:即使私钥泄露,没有密码也无法使用
  • 缺点:每次 git push 都需要输入密码

我的建议: 服务器上用于自动化部署的话,直接回车不设密码


提示 3:确认密码
Enter same passphrase again: 

你的操作:

  • 如果上一步设了密码,再输入一次
  • 如果上一步直接回车,这里也直接 回车

成功提示

如图所示

在这里插入图片描述


🎉 看到这个就说明成功了!

第二步:查看并复制公钥

执行这条命令:

cat ~/.ssh/id_ed25519.pub 

预期输出(示例):

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl [email protected] 
在这里插入图片描述


📋 复制整行内容!


第三步:在 GitHub 添加公钥

在这里插入图片描述
1. 打开浏览器,访问:
https://github.com/settings/keys 

或者手动导航:

  1. 登录 GitHub
  2. 点击右上角头像 → Settings
  3. 左侧菜单 → SSH and GPG keys

2. 点击绿色按钮 “New SSH key”

3. 填写表单:

Title(标题): 给这个密钥起个名字,比如:

BDCA2095 

或者

阿里云生产服务器 

Key type(密钥类型): 选择

Authentication Key 

Key(密钥): 粘贴你刚才复制的公钥

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... [email protected] 

4. 点击 “Add SSH key” 按钮

GitHub 可能会要求你输入账户密码确认


第四步:回到服务器测试连接

执行这条命令:

ssh-T [email protected] 

第一次连接的提示:
The authenticity of host 'github.com (20.205.243.166)' can't be established. ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU. This key fingerprint is: SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU. Are you sure you want to continue connecting (yes/no/[fingerprint])? 

你的操作: 输入 yes 然后按 回车


成功的输出:
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts. Hi 你的GitHub用户名! You've successfully authenticated, but GitHub does not provide shell access. 
比如下面这种:
在这里插入图片描述

🎉 看到 “You’ve successfully authenticated” 就成功了!


第五步:配置 Git(如果还没配置)

按照git的使用说明正常使用即可

在这里插入图片描述


我们可以看到这里已经成功推送到了我的github仓库

Have fun!

Read more

【一天一个计算机知识】—— 【 C/C++ 内存管理与分布】

【一天一个计算机知识】—— 【 C/C++ 内存管理与分布】

⚡ CYBER_PROFILE ⚡ /// SYSTEM READY /// [WARNING]: DETECTING HIGH ENERGY 🌊 🌉 🌊 心手合一 · 水到渠成 >>> ACCESS TERMINAL <<<[ 🦾 作者主页 ][ 🔥 C语言核心 ][ 💾 编程百度 ][ 📡 代码仓库 ] --------------------------------------- Running Process: 100% | Latency: 0ms 索引与导读 * 🚩一、C/C++ 内存分布 * 🚩二、C语言的动态内存管理 * 💪C动态内存管理的面试考点 * 1)realloc的工作机制 * 2)malloc/calloc/realloc的区别是什么? * 🚩三、C++ 动态内存管理 * 1)操作内置类型 * 1.1)单个变量的分配和释放

By Ne0inhk
C++ 中CAS原子操作详解

C++ 中CAS原子操作详解

在 C++ 中,CAS 操作主要通过 <atomic> 头文件中的 std::atomic 类模板提供的成员函数 compare_exchange_weak和 compare_exchange_strong来实现。 1. CAS 的核心逻辑 CAS 操作包含三个操作数: 内存值 (V):要更新的变量的值。预期原值 (E, Expected):线程认为该变量当前应该有的值(通常是之前读取的快照)。新值 (N, New):线程想要写入的新值。 原子操作流程如下,核心是比较、交换、重复: 比较:检查内存位置 V 的当前值是否等于预期值 E。交换(如果相等):如果相等 (V == E),说明在读取后没有其他线程修改过该变量,

By Ne0inhk
【C++算法刷题营地】—— 【string类面试题】Cyber顶级骇客带你速刷 C++ string类 中的常见算法题

【C++算法刷题营地】—— 【string类面试题】Cyber顶级骇客带你速刷 C++ string类 中的常见算法题

⚡ CYBER_PROFILE ⚡ /// SYSTEM READY /// [WARNING]: DETECTING HIGH ENERGY 🌊 🌉 🌊 心手合一 · 水到渠成 >>> ACCESS TERMINAL <<<[ 🦾 作者主页 ][ 🔥 C语言核心 ][ 💾 编程百度 ][ 📡 代码仓库 ] --------------------------------------- Running Process: 100% | Latency: 0ms 索引与导读 * 一、字符串转换 * 1)字符串转换整数 * 关键点拨 * 完整代码 * 最直接的替代接口:stoi * 小试牛刀:整数转字符串 * 2)字符串相加 * 关键点拨 * 完整代码 * 3)仅仅反转字母 * 关键点拨 * 完整代码 * 4)反转字符串 * 4.

By Ne0inhk
【C++:异常】C++ 异常处理完全指南:从理论到实践,深入理解栈展开与最佳实践

【C++:异常】C++ 异常处理完全指南:从理论到实践,深入理解栈展开与最佳实践

🎬 个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》《数据结构与算法》《C/C++干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》 ⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平 🎬 艾莉丝的简介: 🎬 艾莉丝的C++专栏简介: 文章目录 * C++学习阶段的三个参考文档 * 1 ~> 异常的概念 * 2 ~> 异常的使用层 * 2.1 异常的抛出和捕获 * 2.2 栈展开 * 2.2.1 理论 * 2.2.2 最佳实践 * 2.3 查找匹配的处理代码 * 2.3.

By Ne0inhk