首页 > 其他分享 >GitHub 配置 ssh key 的步骤及原理解释

GitHub 配置 ssh key 的步骤及原理解释

时间:2024-09-17 22:45:51浏览次数:10  
标签:公钥 主机 rsa GitHub ssh key

原文:Github 配置 ssh key 的步骤(大白话+包含原理解释)

本文涉及 SSH 相关知识,建议先阅读 SSH 原理与运用(一):远程登录 或者将其作为扩展资料。

前言

在 GitHub 上配置 ssh key 很容易,网上一大堆教程,但基本没有详细解释其原理的,为什么要配?每使用一台主机都要配?配了为什么就不用密码了?下面将简单通俗地解释一下。

我们在往 GitHub 上 push 项目的时候,如果走 https 的方式,每次都需要输入账号密码,非常麻烦。而采用 ssh 的方式,就不再需要输入,只需要在 GitHub 自己账号下配置一个 ssh key 即可。

配置 SSH

git 使用 SSH 配置,初始需要以下三个步骤:

  1. 使用秘钥生成工具生成 rsa 秘钥和公钥
  2. 将 rsa 公钥添加到代码托管平台
  3. 将 rsa 秘钥添加到 ssh-agent 中,为 ssh client 指定使用的秘钥文件

具体操作如下。

第一步:检查本地主机是否已经存在 ssh key
cd ~/.ssh
ls
// 看是否存在 id_rsa 和 id_rsa.pub 文件,如果存在,说明已经有 SSH Key

如下图所示,则表明已经存在:

在这里插入图片描述

如果存在,直接跳到第三步。

第二步:生成 ssh key

如果不存在 ssh key,使用如下命令生成:

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

生成完以后再用第二步命令,查看 ssh key。

第三步:获取 ssh key 公钥内容(id_rsa.pub)
cd ~/.ssh
cat id_rsa.pub

如下图所示,复制该内容:

在这里插入图片描述
第四步:Github 账号上添加公钥

进入 Settings 设置:

在这里插入图片描述

添加 ssh key,把刚才复制的内容粘贴上去保存即可:

在这里插入图片描述
第五步:验证是否设置成功
ssh -T [email protected]

显示如下信息表明设置成功:

在这里插入图片描述

设置成功后,即可不需要账号密码 clone 和 push 代码。

注意之后在 clone 仓库的时候要使用 ssh 的 url,而不是 https!

验证原理

SSH 登录安全性由非对称加密保证,产生密钥时,一次产生两个密钥,一个公钥,一个私钥,在 git 中一般命名为 id_rsa.pub、id_rsa。

那么如何使用生成的一个私钥一个公钥进行验证呢?

  • 本地生成一个密钥对,其中公钥放到远程主机,私钥保存在本地。
  • 当本地主机需要登录远程主机时,本地主机向远程主机发送一个登录请求,远程收到消息后,随机生成一个字符串并用公钥加密,发回给本地。本地拿到该字符串,用存放在本地的私钥进行解密,再次发送到远程,远程比对该解密后的字符串与源字符串是否等同,如果等同则认证成功。

解释

从上面可以知道:ssh key 的配置是针对每台主机的!比如我在某台主机上操作 git 和我的远程仓库,想要 push 时不输入账号密码,走 ssh 协议,就需要配置 ssh key,放上去的 key 是当前主机的 ssh 公钥。那么如果我换了一台其他主机,想要实现无密登录,也就需要重新配置。

下面解释开头提出的问题:

(1)为什么要配?

配了才能实现 push 代码的时候不需要反复输入自己的 GitHub 账号密码,更方便。

(2)每使用一台主机都要配?

是的,每使用一台新主机进行 git 远程操作,想要实现无密,都需要配置。并不是说每个账号配一次就够了,而是每一台主机都需要配。

(3)配了为什么就不用密码了?

因为配置的时候是把当前主机的公钥放到了你的 GitHub 账号下,相当于当前主机和你的账号做了一个关联,你在这台主机上已经登录了你的账号,此时此刻 GitHub 认为是该账号主人在操作这台主机,在配置 ssh 后就信任该主机了。所以下次在使用 git 的时候即使没有登录 GitHub,也能直接从本地 push 代码到远程了。当然这里不要混淆了,你不能随意 push 你的代码到任何仓库,你只能 push 到你自己的仓库或者其他你有权限的仓库!

标签:公钥,主机,rsa,GitHub,ssh,key
From: https://www.cnblogs.com/Higurashi-kagome/p/18417665

相关文章

  • SSH原理与运用(一):远程登录
    原文:SSH原理与运用(一):远程登录-阮一峰的网络日志SSH是每一台Linux电脑的标准配置。随着Linux设备从电脑逐渐扩展到手机、外设和家用电器,SSH的使用范围也越来越广。不仅程序员离不开它,很多普通用户也每天使用。SSH具备多种功能,可以用于很多场合。有些事情,没有它就是......
  • Github Copilot X:你的下一个 GPT4 何必是 GPT4
    当地时间3月22日,微软旗下代码托管平台GitHub发布了编程辅助工具Copilot的全新版本CopilotX,新版本接入GPT-4,并新增了聊天和语音功能,允许开发人员用自然语言询问如何完成特定的编码功能。一、GithubCopilotX简介GithubCopilotX是由微软旗下的Github发布的一款人工......
  • MySQL中的ON DUPLICATE KEY UPDATE详解与应用
    目录什么是ONDUPLICATEKEYUPDATE?ONDUPLICATEKEYUPDATE的基本语法适用场景及工作原理使用ONDUPLICATEKEYUPDATE的实际示例示例1:简单的插入和更新示例2:结合多列唯一约束示例3:动态更新某些字段性能分析与优化建议与REPLACEINTO的区别注意事项与常见问题......
  • GitHub 2023排名前十的最佳开源项目
    开源软件(OSS)彻底改变了当今软件开发的方式。在数百万个开源GitHub项目中,要找到最适合需求的开源项目可能会让人不知所措。今天给大家列出2023年增长最快的前10个开源GitHub仓库。通过这些增长最快的开源项目,也可以从整体上了解一下目前技术的整体动向。1、PyGWalker:JupyterNoteboo......
  • SSH工具 MobaXterm的使用与快捷配置
    软件下载/安装与链接服务器/本地虚拟机文章目录软件下载/安装与链接服务器/本地虚拟机软件下载软件安装使用软件链接非本地机器并设置用户密码我不想有确定密码的弹窗其余便捷配置配置右键粘贴SSH链接设置软件下载如果你访问不了这个网址,可以评论区找博主或者关......
  • MySQL 8.0 Public Key Retrieval is not allowed 错误的解决方法
    原文:MySQL8.0PublicKeyRetrievalisnotallowed错误的解决方法参考:ConnectionJava-MySQL:PublicKeyRetrievalisnotallowed在使用MySQL8.0时重启应用后提示com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:PublicKeyRetrievalis......
  • 【油猴脚本】00008 案例 Tampermonkey油猴脚本,动态渲染表格-实现页面动态-添加表格列,
    前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦......
  • MySQL间隙锁,next-key锁
    间隙锁间隙锁是对索引记录之间的间隙的锁,或者是对第一个索引记录之前或最后一个索引记录之后的间隙的锁。例如,SELECTc1FROMtWHEREc1BETWEEN10and20FORUPDATE;阻止其他事务将的值插入15到列中t.c1,无论列中是否已经存在任何此类值,因为该范围内所有现有值之间的......
  • SSH公私钥后门从入门到应急响应
    目录1.SSH公私钥与SSH公私钥后门介绍1.1SSH公私钥介绍1.1.1公钥和私钥的基本概念1.1.2SSH公私钥认证的工作原理(很重要)1.2SSH公私钥后门介绍2.如何在已拿下控制权限的主机创建后门2.1使用Xshell生成公钥与私钥2.2将公钥上传到被需要被植入后门的服务器cento......
  • SSH软链接后门从入门到应急响应
    目录1.软链接与SSH软链接后门介绍1.1软链接介绍1.2SSH软连接后门介绍2.如何在已拿下控制权限的主机创建后门2.1 使用root账户并执行ssh软链接后门命令:2.2 连接软链接后门测试:2.3 创建其它账户ssh软连接后门命令3.如何进行应急响应3.1查看服务器开放的端......