github添加ssh密钥,通过ssh方式推送代码

news2025/1/24 8:22:16

左手编程,右手年华。大家好,我是一点,关注我,带你走入编程的世界。 公众号:一点sir,关注领取python编程资料

很多人在使用github的时候,如果还是使用https的方式推送代码的话,可能会发现推送不上去,官方会建议你使用ssh的方式进行代码推送。通过ssh方式推送代码,速度更快,更高效,而且还不用每次输密码,缺点就是要在你自己的本机以及github上面做一些配置。这些配置并不难,很简单,前期花一点点时间,可以避免很多繁琐的事情。

本机生成密钥

如果你的计算机上还没有 SSH 密钥,你需要生成一对新的 SSH 密钥。

如果你是在linux机器上,直接执行以下命令,要是window机器的话,打开cmd或者powershell窗口,执行以下命令

ssh-keygen -t rsa -b 4096 -C "xxx"

其中字符xxx你可以任意的填写,很多人说是填写你gihtub上面的邮箱或者账号,实际不用,可以任意填写,这个就相当于注释,不用纠结这个。

ssh-keygen -t rsa -b 4096 -C "xxx" -f id_rsa_alittlesir
  • 运行 ssh-keygen 时,系统会询问你是否要更改密钥的位置。默认位置通常是好的。
  • 系统还会询问你是否要输入密码短语来保护你的私钥。输入输入密码短语是可以增加安全性,但在每次使用 SSH 密钥时都需要输入密码,可能就变得不方便了。

如果你想在一台机器上生成多个id_ras公玥的话,或者机器是你和别人共用的话,也就是说你想在一台机器上ssh到多个自己的账号,那么可以通过-f命令重命名一下生成的id_rsa文件名,记住这种方式生成的id_rsa文件是在当前目录下。比如我上面就在当前目录下生成了两个文件

id_rsa_alittlesir
id_rsa_alittlesir.pub

当然你可以加上路径,指定生成的目录下,记得路径要加上引号。

ssh-keygen -t rsa -b 4096 -C "xxx" -f "C:\Users\alittlesir\.ssh\id_rsa_alittlesir"

id_rsa_alittlesir是私玥,id_rsa_alittlesir.pub是公钥,公玥上的内容是填写在服务器上的,如果是提交到gitee或者github上面的话,就需要就那上面去配置公玥,记住,这里的意思是把公玥上的内容复制到github上,至于复制的地方,下面会说。而私玥是自己本地使用,不用动。

Github配置

本机上生成了密钥后,现在就需要到github上面去配置填写下你生成的公玥内容,以下就是详细的步骤。

1、打开github,点击setting按钮,进入设置界面。

2、找到左侧栏的SSH keys and GPG keys,进入SSH的界面,填写公玥相关信息。

3、点击New SSH keys,添加SSH key的公玥

4、其中Title随便填写,Key type保持不变,Key的内容就是填写你生成的公玥内容,也就是id_rsa_tianya85.pub的内容,直接复制就好。

这样你就在你的github账号上生成了一个ssh key,那么你在客户端进行推送的时候,就不需要密码了。

检查配置

添加完公玥之后,你也可以检查一下,配置是否成功了,很简单,直接通过以下命令即可。

ssh -T git@github.com

如果输出以下内容,那么配置就是可以的。

$ ssh -T git@github.com
Hi alittlesir! You've successfully authenticated, but GitHub does not provide shell access.

最后要记得,通过ssh方式clone代码的时候,HTTPS的URL你需要更改它为SSH的URL,这个在github上面是有这个的。

git clone git@github.com:username/repo.git

如果你的仓库当前使用的是 HTTPS URL,你需要更改它为 SSH URL。

git remote set-url origin git@github.com:username/repo.git

原理解释

当配置了 SSH 密钥对之后,就不需要在每次通过 SSH 连接到远程服务器时输入密码,这是因为 SSH 提供了一种基于公钥的身份验证机制。

1、密钥对生成
当在本地计算机上运行 ssh-keygen 命令时,会生成一对密钥:一个私钥(例如 id_rsa)和一个公钥(例如 id_rsa.pub)。私钥存储在我们的本地计算机上,而公钥则被添加到要访问的远程服务器(如 GitHub)。

2、公钥分发
将公钥上传到 GitHub 的账户设置中,告诉 GitHub 你的公钥对应于你的私钥,这是一一对应关系的。

3、认证过程
当我们试图通过SSH连接到 GitHub 时,GitHub 会发送一个只有持有相应私钥的人才能解密的信息给你的客户端。你的客户端使用你的私钥解密该信息,并将其发送回 GitHub。GitHub 验证解密后的信息与原始信息匹配,并确认它是由你的私钥解密的。如果验证成功,GitHub 就会允许你进行通信。

因为 SSH 密钥对是成对出现的,公钥和私钥之间有数学上的关联,这意味着:

  • 只有私钥持有者能够解密由公钥加密的信息。
  • 公钥可以自由分发,因为它不能用于解密由自己加密的信息。

因此,一旦你的 SSH 公钥已经添加到了 GitHub,并且你的私钥安全地存储在你的计算机上,你就可以通过 SSH 连接到 GitHub 而无需输入密码。

需要注意的是,如果我们在生成密钥时设置了密码短语(passphrase),那么在每次使用私钥之前,你需要输入这个密码短语来解锁私钥。为了方便起见,你可以使用 SSH 代理(如 ssh-agentPageant)来管理私钥,这样在你的一次会话中,只需要输入一次密码短语即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1977951.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《LeetCode热题100》---<5.①普通数组篇五道>

本篇博客讲解LeetCode热题100道普通数组篇中的五道题 第一道:最大子数组和(中等) 第二道:合并区间(中等) 第一道:最大子数组和(中等) 法一:贪心算法 class So…

「文件加密软件精选」13个惊艳无比的软件推荐请查收!

信息安全是企业生存与发展的基石。 一次不慎的数据泄露,就可能给企业带来难以估量的损失。因此,文件加密成为了保护企业核心资产的重要手段。 某日,两位员工小李和小张在茶水间闲聊: “你知道吗?最近公司开始推广文…

飞浆OCR模型训练详细教程

目录 飞浆使用文档一 环境查看1.1 Python 环境1.2 版本选择1.3 飞浆测试 二 数据集的标准备2.1 PPOCRLabelv22.1.1 安装 PaddlePaddle2.1.2 安装与运行 PPOCRLabel2.1.3 数据集划分 三 PaddleOCR 的环境搭建3.1 环境搭建3.2 模型下载 四 模型训练4.1 检测模型训练4.2 识别模型训…

萱仔环境记录——git的安装流程

最近由于我有一个大模型的offer,由于我只在实验室的电脑上装了git,我准备在自己的笔记本上本地安装一个git,也给我的一个师弟讲解一下git安装和使用的过程,给我的环境安装章节添砖加瓦。 github是基于git的一个仓库托管平台。 g…

用Python实现亚马逊Amazon高性能爬虫采集销量信息

用Python实现亚马逊Amazon高性能爬虫采集销量信息 引言 亚马逊作为全球最大的电商平台,拥有丰富的商品种类和庞大的用户基数。因此,采集亚马逊的销量信息对于市场分析、竞争对手研究以及运营优化有着重要的作用。本文将详细介绍如何用Python实现高性能的…

机械学习—零基础学习日志(高数20——洛必达法则)

零基础为了学人工智能,真的开始复习高数 这里讲解一个历史,洛必达法则其实并不是洛必达想出来的,洛必达整理了第一本微积分的书籍,是真正的知识传播者。洛必达法则是洛必达从伯努利哪里买过来的,并结合了莱布尼兹的论…

本地部署 Llama-3-EvoVLM-JP-v2

本地部署 Llama-3-EvoVLM-JP-v2 0. 引言1. 关于 Llama-3-EvoVLM-JP-v22. 本地部署2-0. 克隆代码2-1. 安装依赖模块2-2. 创建 Web UI2-3.启动 Web UI2-4. 访问 Web UI 0. 引言 Sakana AI 提出了一种称为进化模型合并的方法,并使用该方法创建大规模语言模型&#xff…

数论——线性同余方程、扩欧求解线性同余方程、线性组合、原根求解

线性同余方程 线性同余方程是形如 的方程&#xff0c;其中a 、b、m 为给定的整数&#xff0c;x 是未知整数。 扩欧求解线性同余方程 void mod_slover(int a, int b, int n) {int d, x, y, x0;d extend_gcd(a, n, x, y);if (b % d ! 0)cout << "no answer";…

联邦学习研究综述【联邦学习】

文章目录 0 前言机器学习两大挑战&#xff1a; 1 什么是联邦学习&#xff1f;联邦学习的一次迭代过程如下&#xff1a;联邦学习技术具有以下几个特点&#xff1a; 2 联邦学习的算法原理目标函数本地目标函数联邦学习的迭代过程 3 联邦学习分类横向联邦学习纵向联邦学习联邦迁移…

科普文:微服务之Spring Cloud OpenFeign服务调用调用过程分析

概叙 Feign和OpenFeign的关系 其实到现在&#xff0c;至少是2018年之后&#xff0c;我们说Feign&#xff0c;或者说OpenFeign其实是一个东西&#xff0c;就是OpenFeign&#xff0c;是2018.12 Netflix停止维护后&#xff0c;Spring cloud整合Netflix生态系统的延续。后面其实都…

ComfyUI-BrushNet(局部重绘)节点安装及效果、模型下载及详细使用方法✨

&#x1f35c;背景介绍 ComfyUI 中BrushNet的节点已经发布了三个月左右的时间了&#xff0c;后来陆续更新了更多的功能和模型接入&#xff0c;整体效果看起来还是不错的。这个节点随着能力的更新&#xff0c;接入了更多的模型&#xff0c;而每个模型默认的名字又比较相似&…

RoboDK的插件

目录 collision-free-planner&#xff1a; opc-ua&#xff1a; collision-free-planner&#xff1a; RoboDK 的无碰撞规划器插件使用概率路线图 (PRM) 自动在机器人工作空间内创建无碰撞路径。 有关无碰撞规划器的更多信息&#xff0c;请访问我们的 文档。 生成参数无碰撞…

揭秘:查询大数据信用报告的三大作用

相信很多朋友都听说过大数据信用是什么&#xff0c;其实早在几年前&#xff0c;不少的网贷平台都是用人行征信加上大数据信用作为平台风控审核的依据&#xff0c;直到大数据技术的发展&#xff0c;现在不少的银行等机构都将大数据信用作为银行放贷风控审核的重要指标&#xff0…

趋势跟踪策略 文华财经指标公式源码 九稳量化系统 多空趋势指标神器 期货起爆点买入指标源码

斯坦利•克罗 1、赢利时是长线&#xff0c;亏损时就是短线。 2、50%回调位金字塔加码&#xff0c;“坐”着赚钱&#xff0c;甚至不惜用鸵鸟政策&#xff0c;眼不见心不烦。 3、阻碍长线操作成功的最主要原因是觉得单调乏味和失去纪律。 4、把自己的止损点设在远离绝大多数投…

detr论文解读

参考&#xff1a;https://www.bilibili.com/video/BV1md4y1s7nW/?spm_id_from333.788&vd_source156234c72054035c149dcb072202e6be 补充&#xff1a;decoder更关注边缘特征 补充&#xff1a; spatial pos.enc.&#xff1a;空间位置编码。包含encoder和decoder的空间位置…

Flutter 2024: Impeller引擎引领渲染新纪元

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 Flutter 2024: Impeller引擎引领渲染新纪元 在移动应用开发领域&#xff0c;Flutter凭借其跨平台能力、丰富的组件库和高性能的渲染引擎&#…

OpenStack概述

一、初识OpenStack OpenStack Docs: 概况 一&#xff09;OpenStack架构简述 1、理解OpenStack OpenStack既是一个社区&#xff0c;也是一个项目和一个开源软件&#xff0c;提供开放源码软件&#xff0c;建立公共和私有云&#xff0c;它提供了一个部署云的操作平台或工具集&…

Linux 内核源码分析---通用文件模型及 VFS 结构

通用文件模型 通常一个完整的 Linux 系统由数千到数百万个文件组成&#xff0c;文件中存储了程序、数据和各种信息。层次化的目录结构用于对文件进行编排和分组。 ReiserFS&#xff08;新型的文件系统&#xff09;–>Reiser4 它通过一种与众不同的方式—完全平衡树结构来容…

高并发下的分布式缓存 | 设计和实现LRU缓存

LRU缓存介绍 什么是LRU缓存&#xff1f; LRU缓存是一种缓存策略&#xff0c;当缓存满了&#xff0c;需要腾出空间存放新数据时&#xff0c;它会删除最近最少使用的数据。换句话说&#xff0c;它会优先淘汰那些最久没有被访问的元素&#xff0c;以确保缓存中的数据是最近使用的…

学习安卓开发遇到的问题

问题1&#xff1a;学习禁用与恢复按钮中&#xff1a; java代码报错&#xff1a;报错代码是 R.id.btn_enable;case R.id.btn_disable;case R.id.btn_test: 代码如下&#xff1a;&#xff08;实现功能在代码后面&#xff09; package com.example.apptest;import static java.…