Win10 环境配置 Github SSH Key

2023-10-27

在这里插入图片描述

使用 Git 关联远程仓库通常可以使用 HTTP 协议或者 SSH 协议,在使用上 SSH 只需要一次配置,之后提交操作都不需要进行用户密码验证;但是 HTTP 方式每次 Push 操作都需要验证用户名和密码。

当然,HTTP 方式更方便开源,匿名用户可以随意进行克隆和代码阅读;在个人项目使用的时候则需要反复进行 Push 操作, 可以通过配置 SSH 实现快捷的代码提交。

01 为指定账户创建密钥


1️⃣ 首先需要设置绑定密钥的 Git 用户名和邮箱地址,在终端运行如下命令

git config --global user.name 'yourname' 
git config --global user.email 'youremail@example.com'

如果在此之前已经设置过了,可以直接获取即可。

git config --global user.email

在这里插入图片描述

2️⃣ 然后,使用 ssh-keygen 命令为上述账号创建密钥,其中命令的参数选项中 -t 用于指定密钥类型;-C 用于设置注释文字,比如邮箱;还有 -f 用于指定密钥文件存储文件名。

ssh-keygen -t rsa -C "youremail@example.com"

终端中执行上面的命令可以得到如下图所示的内容

  • 如果命令行中省略 -f 参数会提醒输入一个文件名来保存密钥 Enter file in which to save the key... ,没有特殊需求的话这里可以直接按 Enter 跳过使用默认文件名。
  • 接着又会提示输入两次密码 passphrase,这个密码是进行 Git Push 操作的时候要输入的密码,Github 账号无关。如果没有特殊的安全性需要这里也可以直接按 Enter 跳过,不设置密码,这样可以在 Push 操作的时候不输入密码直接提交。

在这里插入图片描述
命令行执行完成之后,如果你也获得了上图中相似的信息那么就说明 SSH Key 已经创建成功了,红色方框中的路径地址就是你的密钥保存的文件位置

02 将密钥添加到本地主机的 ssh-agent 服务


生产了密钥之后,本地主机需要将私钥添加到 ssh-agent 服务中。

1️⃣ 首先,需要启动 ssh-agent 服务。在 Win10 中可以在管理员权限下通过 Set-Service -StartupType Automatic ssh-agent 将 ssh-agent 服务的启动类型设为自启,然后使用 Start-Service ssh-agent 命令启动当前会话下的 ssh-agent 服务。

Set-Service -StartupType Automatic ssh-agent
Start-Service ssh-agent
Get-Service ssh-agent # 查看服务是否启动成功

2️⃣ 然后使用 ssh-add 命令将新建的密钥添加到 ssh-agent 服务中

ssh-add /C/Users/regul/.ssh/id_rsa # 修改为你的密钥文件路径

下图中添加的密钥已经在当前目录下,所以直接使用了相对路径。

在这里插入图片描述

03 将公钥添加到 Github 账户


到此为止,本地主机的 SSH 配置已经完成了,最后将公钥添加到 Github 账户中即可。

1️⃣ 首先,拷贝第一步中生成的公钥 id_rsa.pub 中的完整内容,如下图所示

在这里插入图片描述

2️⃣ 然后,进入到你的 Github 的设置页面中点击 New SSH key 按钮添加公钥

在这里插入图片描述
3️⃣ 最后,在添加 SSH key 的页面中的 Key 栏中输入前面拷贝的公钥,Title 中也可以设置这个新 key 的名称,完成之后点击 Add SSH key 按钮即可
在这里插入图片描述
最后的最后,在终端里面输入如下命令,测试一下本地与Github 的 SSH key 配置是否成功

ssh -T git@github.com

显示内容和下图相似,那么恭喜你已经完成了 SSH key 的配置,后面就可以自由的进行 Push 提交操作。(如果配置完成之后还发现需要验证用户名和密码,请检查一下项目的克隆方式是 HTTPS 还是 SSH)

在这里插入图片描述

如果已经使用 HTTP 方式克隆了仓库,则执行如下命令需要修改远程仓库地址

git remote set-url origin <url>

04 SSH 协议原理理解


Github SSH Key 的配置已经完成了,接下来一起探究一下为什么 SSH 方式可以免除 HTTP 方式中的用户验证步骤呢

4.1 对称加密与非对称加密

为了提高安全性,在向远程仓库提交代码的时候需要对提交的内容进行加密,即通过加密算法将明文转换为密文进行安全传输。

加密的方式通常有两种:

  • 对称加密:加密解密都是用的是同一个密钥
  • 非对称加密:加密解密过程由一对公钥私钥组成,这对密钥可以进行相互的加密解密。

对称加密的密钥通常是使用通信双方的共享信息生成的,所以其加密解密过程的速度更快,适用于传输大量数据的场景。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Win10 环境配置 Github SSH Key 的相关文章

  • 自动更改 github 文件

    我制作了一个带有白名单的应用程序 withelist 位于 github 存储库上 只有一个文件 即 withelist 每次下载我的应用程序的用户想要被允许使用该应用程序时 都必须向我发送一个消息插入白名单 现在这个过程真的很慢 我想加快
  • GitHub Actions 中的嵌套模板(从另一个 yaml 文件调用一个 yaml 文件)

    GitHub Action 是否支持嵌套模板 例如 以下是 Azure Pipeline yaml 的示例 其中调用另一个 yaml 文件 job BuildFunctions steps each func in parameters f
  • BitBucket+Jenkins:仅在特定分支更改时触发构建

    以下是该问题的据称解决方案 尽管它看起来确实是一种解决方法 而不是最终的解决方案 有没有一种方法 通过作业配置或 bitbucket 挂钩配置 我可以将作业设置为仅在推送到特定分支时运行构建 是否可以仅从一个特定分支触发 Jenkins h
  • Azure DevOps/VSTS 始终在干净的存储库上报告“DETACHED HEAD”

    Friends 我现在厌倦了 Azure DevOps VSTS Jenkins 好多了 现在仍然如此 只是我的组织想要使用 Azure DevOps 我有一个谜团需要帮助来解决 以下是我的笔记本电脑上的存储库 它没有未跟踪或未提交的更改
  • 如何删除“致命:松散物体”?

    我的一个克隆存储库是从 git fsck 获取的 致命 松散对象 40bda4e3b79c3d7bf598df31d9e68470f97a3f79 存储在 git objects 40 bda4e3b79c3d7bf598df31d9e68
  • 获取引用而不下载对象[重复]

    这个问题在这里已经有答案了 我想检查 origin master 是否与我的 HEAD 不同 I do not想要git fetch 因为它可能非常昂贵 我滥用 git 的方式使得成本高得令人望而却步 任何允许我从远程获取提交列表或顶部提交
  • 理解 git log --stat 输出

    我试图理解的输出git log stat命令 第一个输出 commit 4c90aee323acc337a37040e02a0a3644f4155738 Date Fri May 1 22 46 11 2015 0400 Submittin
  • 使用 'gitbranch' 命令显示当前 git 分支

    我在处理太多分支时遇到问题 需要花费很多时间才能找到我现在正在处理的当前分支 有没有办法在使用时显示的列表顶部列出当前分支git branch命令 如果您只想要签出分支 请使用git branch show current
  • 在 git 中编辑分支?

    我在 github 网站上创建了一个分支 该分支不在我的本地存储库中 如何将该分支带到我的本地计算机 对其进行编辑 然后将其推送回我的 github 帐户 在本地工作目录中输入 git fetch origin newbranch git
  • 如何使用 git-svn 使 svn:external 保持最新?

    将我的存储库视为 SVN 存储库 我得到 svn co http myrepo foo trunk foo foo bar baz gt http myrepo baz trunk 将其视为 Git 存储库 我得到 git svn clon
  • Jenkins 多分支管道 - 在分支中配置属性?

    我们已经使用 Jenkins 多分支管道插件成功设置了构建管道 该插件在大多数情况下都运行良好 但是我们遇到了一个困扰我们的问题 Jenkinsfile包含一组属性 这些属性也显示在 UI 中 但如何为各个分支设置默认值 这就是我们的属性定
  • 合并分支时,Git 不显示已删除行的当前/传入更改

    我正在尝试了解有关 git 分支 合并的更多信息 一直以来只使用 master 分支 我分支两次 然后执行合并 为什么 git 只显示新的冲突行 我想知道为什么删除 熊 根本没有突出显示为更改 您已经在评论中介绍了其中的一些内容 但让我们把
  • git-http-backend 与 AuthzUnixGroup 无法正常工作

    我正在尝试在 CentOS 6 机器上的 Apache 2 2 上设置一个 git 存储库 并安装了 git 我尝试过许多不同的方向 但我却不知所措 我目前的情况包括能够clone正常 但完全无法推动 似乎我无法使身份验证位正常工作 因为我
  • 在 github 上查找强制推送的提交者

    在我们的项目 托管在 GitHub 上 中 每隔一段时间就会有人意外强制推送 master 没有人知道是否这样做 我想找出是谁干的 以及背后有什么样的错误配置的工具或坏习惯 那么问题来了 如何识别进行强制推送的用户呢 当我拉动时 我看到这样
  • gitlab runner ssh私钥644文件权限错误

    运行 gitlab ci cd 管道时 ssh 给出 0644 badpermission 错误 变量作为文件类型存储在 gitlab 的 settings gt variable 部分中 gitlab ci yml 文件如下所示 stag
  • 通过 SFTP 克隆 Git 存储库

    每次我尝试克隆 Git 存储库时都会遇到致命错误 我运行这个 git clone sftp email protected cdn cgi l email protection git foobar git 我得到这个 fatal Unab
  • 如何将 man 和 zip 添加到 Windows 上的“git bash”安装中

    我在用git bash https git for windows github io 在 Windows 上 即git对于 Windows 通过集成bash 显然它使用的是MINGW MSYS支撑 来自 VonC 的更新 现在使用 msy
  • git 无法暂存文件,将所有文件显示为重复,但字符大小写不是问题

    就我而言 我对我的文件之一进行了简单的一项更改 并想提交我的更改 但注意到 commit am 没有添加 提交该文件 发出 git 后ls files stage 我看到项目中的所有文件可能都显示为重复项 这是其中一个文件的示例 10064
  • 使用 Dropbox 作为跨多台机器的 git 工作目录 - 提交不能完美同步

    首先 我想强调这个问题与在 Dropbox 上托管我的中央存储库无关 而且我对使用 git 还很陌生 我能找到的其他涉及 Dropbox 和 git 的问题都没有真正回答我的问题 它们要么是关于使用 Dropbox 托管您的存储库 要么是关
  • git stash 和编辑帅哥

    我完全喜欢git add p and git stash但我偶尔会遇到以下问题 该问题是通过以下命令序列重现的 git add p my file 然后我手动编辑大块 using e 因为 git 建议的分割不适合我 git stash k

随机推荐

  • 输入框失去焦点时,小数点前面不能以0开头及保留3位小数

    text box blur function obj this val parseFloat this val if this val length this val indexOf 1 gt 3 this val parseFloat t
  • Jenkins API 开发实战

    一 Jenkins扩展 1 共享库简介 共享库由名称 源代码检索方法 如 SCM 和可选的默认版本定义 该名称应该是一个简短的标识符 因为它将在脚本中使用 该版本可以是该 SCM 可以理解的任何内容 例如 分支 标签和提交哈希都适用于 Gi
  • 若依RuoYi-Vue隐藏首页页面

    需要修改两个地方 分别是 路由菜单 注释掉首页菜单 除了首页之外的菜单都是动态获取的 首页是写死的 所以注释掉首页菜单就不会在左边的菜单列表看到首页了 登录按钮的位置 修改路由跳转链接 具体修改如下 1 注释首页菜单 文件位置在 src r
  • C++中的仿函数functor

    引子 先考虑一个简单的例子 假设有一个vector
  • zabbix安装与使用

    安装包地址 https jaist dl sourceforge net project zabbix ZABBIX 20Latest 20Development 4 2 0alpha3 zabbix 4 2 0alpha3 tar gz
  • 区块链开发初学者编程入门指南

    我有很多问题需要了解区块链Blockchain的工作原理 重要的是 我如何在其上构建应用程序dapp 花了几个星期的时间挖掘 阅读和试验才最终了解 我找不到简短而全面的指南 现在 我有一些不错的理解 我想写一个可以帮助别人的 这是一个快速指
  • 计算机网络毕业论文ensp,eNSP实验(一)简单组网实验

    一 前言 计算机网络在很久之前学习过 最近突然对网络安全领域比较感兴趣 所以通过实验的形式重新温习一下计算机网络的相关知识 eNSP实验系列借助华为eNSP软件完成相关实验的组网设计 实验所需的工具包括eNSP软件 Wireshark抓包工
  • React 学习之旅一

    React 学习之旅一 React 官网 版本要求 Node gt 8 10 和 npm gt 5 6 node v npm v 创建 React 项目 npx create react app my app Hook 它可以让你在不编写
  • customEventData的普通用法

    需要先用event来接受一些其他信息 然后传入的数值放在参数中 类型按钮按下 TypeButtonDown event value console log 按下 console log value 然后再button这里设置好eventDa
  • java 实现POI导入导出Excel

    package com chenxc utils excel import org apache poi hssf usermodel import org apache poi hssf util HSSFColor import org
  • 基于Django Template模式实现简单的注册、登录,表单提交

    最近在做一个简单的django项目 需求是能实现注册 登录 并且有一个提交评论 展示评论的功能 django做web项目是非常适合 前期熟悉对应的配置 熟悉框架结构 按照既定的模式进行二次开发即可完成一个完整的系统 项目目录结构如下 1 核
  • GPT4的1000+篇文章总结

    GPT4的1000 篇文章总结 本文收集和总结了有关GPT4的1000 篇文章 由于篇幅有限只能总结近期的内容 想了解更多内容可以访问 http www ai2news com 其分享了有关AI的论文 文章 图书 query 恐怖的GPT4
  • 页面触底自动加载 Vue 组件

    不管是 web 端还是移动端 信息流都是现在很流行的信息展示方式 信息流经常搭配自动加载一起使用以获得更好的使用体验 最近在使用 Vue 开发过程中也遇到了首页信息流自动加载的需求 大致了解了一下几个滚动自动加载组件 发现多数都是把内容放在
  • 如何理解jquery的$(".span").eq(0) 和 $(”.span“)[0]

    span class span 1 span span class span 2 span span class span 3 span span class span 4 span span 选择了4个span 都是jquery对象 可以
  • 第一章:走进scratch3.0

    第一章 Scratch中国 想象 创作 编程 分享 scratch cn cn 离线版桌面版下载 exe结尾是 windows版 dmg是 macOS 苹果 版 点击下方链接下载 链接 https pan baidu com s 1wwrK
  • ALtium 16等长布线、差分布线

    等长布线 1 先布好线 2 定义一个class design classes 下图右键net classes add classes 之后定义这个class的名字 例如dc 选择要等长的网络加入这个dc 之后close即可 3 tools
  • 毕业设计-基于机器学习的股票预测

    目录 前言 课题背景和意义 实现技术思路 一 传统股票预测模型 二 新型股票预测方法 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校
  • ImportError: No module named psutil的解决

    系统版本 cat etc redhat release CentOS release 6 9 Final 跑python脚本的时候报错ImportError No module named psutil 于是想要用pip来安装 但是发现pi
  • 关于source中的TARGETLIBS和SOURCELIBS的区别

    摘自 http topic csdn net u 20090403 11 897684cc 3eca 40f4 90d7 88e501669efe html 转自微软MVP作者 ARM WinCE 1 Dirs文件 关于Dirs文件 就是指
  • Win10 环境配置 Github SSH Key

    使用 Git 关联远程仓库通常可以使用 HTTP 协议或者 SSH 协议 在使用上 SSH 只需要一次配置 之后提交操作都不需要进行用户密码验证 但是 HTTP 方式每次 Push 操作都需要验证用户名和密码 当然 HTTP 方式更方便开源