Github代码仓库SSH配置流程

作者: Herman Ye @Auromix
测试环境: Ubuntu20.04
更新日期: 2024/02/21
1 @Auromix 是一个机器人爱好者开源组织。
2 由于笔者水平有限,以下内容可能存在事实性错误。

相关背景

在为Github代码仓库配置SSH前,需要先了解一些基础的背景,如果这部分对你来说已经非常熟悉,可以跳过到下一步。

什么是SSH?

SSH(Secure Shell)协议是一种网络协议,用于在不安全的网络中提供安全的数据通信。它可以用于远程登录到计算机系统,也可以用于在两台计算机之间传输文件。SSH提供了强大的身份验证和安全的数据通信,可以防止密码、信息被拦截、篡改或者重放。

使用 SSH 密钥,您可以连接到 GitHub,而无需在每次访问时提供您的用户名和个人访问令牌。并且,您还可以使用 SSH 密钥来克隆/提交代码到Github。

通过SSH连接到Github需要什么操作?

设置 SSH 时,您需要生成新的 SSH 私钥并将其添加到 SSH 代理,方便SSH Agent对SSH秘钥的密码进行管理,同时,还需要将SSH 公钥添加到您在 GitHub 上的帐户。

SSH Agent是什么?

ssh-agent是一个帮助管理SSH私钥的程序,在用户生成 SSH 密钥时,可以添加密码以进一步保护密钥。 每当使用密钥时,都必须输入密码。 如果密钥具有密码并且你不想每次使用密钥时都输入密码,就需要用到SSH Agent。

当你启动ssh-agent后,你可以将你的私钥添加到ssh-agent中,然后ssh-agent会在需要时自动提供私钥,这样你就不需要每次使用SSH时都输入密码了。

完整流程

如果你需要使用SSH和Github服务器构建安全的连接,克隆或提交代码,请按照以下流程执行。

1.查看现有的SSH秘钥

ls -al ~/.ssh

如果发现名为id_rsa.pub, id_ecdsa.pub, id_ed25519.pub的公钥,
则可以跳过秘钥生成的步骤。
如果不存在~/.ssh目录或者没有对应的秘钥,则需要生成。

2.生成秘钥

通过ssh-keygen可以生成SSH密钥对,包含公钥和私钥:

  • 公钥(public key)
    可以公开给任何人,用于加密数据和验证签名。通常存放在远程服务器上。

  • 私钥(private key)
    必须严格保密,用于解密数据和创建数字签名。通常存放在本地计算机上。

SSH秘钥的主要用途是提供一种无密码登录远程服务器的方式。当你在远程服务器上安装了你的公钥后,你可以使用你的私钥来登录,而无需输入密码。这不仅方便,而且比使用密码更安全。

ssh-keygen -t ed25519 -C "youremail@icloud.com"

在这里插入图片描述
可以为SSH秘钥对指定保存秘钥的文件名、使用SSH秘钥的密码,因为这里指定了保存秘钥的文件名为id_ed25519_for_github,所以最终会在在目录下生成了私钥id_ed25519_for_github和公钥id_ed25519_for_github.pub

使用SSH秘钥的密码,通常为了方便不进行设置,如果确实设置了使用SSH秘钥的密码,则可以通过ssh-agent来帮助,方便在每次使用SSH秘钥时不用每次都输入密码

注意:如果你没有设置使用SSH秘钥的密码,则可以不执行以下两条命令

  • 启动SSH Agent
eval "$(ssh-agent -s)"
  • 添加私钥到SSH Agent
ssh-add ~/.ssh/id_ed25519_for_github

3.复制公钥

cat ~/.ssh/id_ed25519_for_github.pub

4. 在Github上添加公钥

在github的网页依次点击右上角头像->Settings->Access->SSH and GPG keys->New SSH key添加刚才复制的公钥,并给他一个用于提醒你的名称。
在这里插入图片描述

5.检查连接是否正常

最后,测试从主机到Github服务器的连接是否正常。

ssh -T git@github.com

如果正常,应当返回如下内容:

Hi Hermanye996! You’ve successfully authenticated, but GitHub does not
provide shell access.

如果设置了魔法代理,导致github的SSH端口无法访问,可以尝试执行以下脚本:

#!/bin/bash# File: configure_ssh.sh
# Author: Herman Ye
# Date: 2023-11-03# Set configuration parameters
host="github.com"
hostname="ssh.github.com"
port="443"# Ensure the ~/.ssh directory exists
mkdir -p ~/.ssh# Create or append the configuration to the ~/.ssh/config file
echo "Host $host" >> ~/.ssh/config
echo "Hostname $hostname" >> ~/.ssh/config
echo "Port $port" >> ~/.ssh/configecho "Configuration has been written to the ~/.ssh/config file."

参考链接

https://docs.github.com/en/authentication/connecting-to-github-with-ssh/about-ssh
https://docs.github.com/en/authentication/connecting-to-github-with-ssh/managing-deploy-keys
https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account

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

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

相关文章

【LeetCode】升级打怪之路 Day 01:二分法

今日题目: 704. 二分查找35. 搜索插入位置34. 在排序数组中查找元素的第一个和最后一个位置 目录 今日总结Problem 1: 二分法LeetCode 704. 二分查找 【easy】LeetCode 35. 搜索插入位置 ⭐⭐⭐⭐⭐LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置 【medi…

探索Linux系统中HTTP隧道技术的原理与实践

在Linux的世界里,HTTP隧道技术就像是一个神秘的魔法师,它能让你的网络请求穿越重重障碍,安全地到达目的地。今天,我们就来一起探索这个魔法师的奥秘,看看它是如何在Linux系统中施展魔法的。 首先,我们要明…

pcd文件介绍

pcd文件介绍 一、PCD文件格式二、为什么要使用新的文件格式?三、PCD 版本四、文件格式头五、数据存储类型六、优于其他文件格式七、结果展示八、相关链接 一、PCD文件格式 本文档描述PCD(点云数据)文件格式,以及它在点云库(PCL)中的使用方式。 二、为什…

备战蓝桥杯—— 双指针技巧巧答链表2

对于单链表相关的问题,双指针技巧是一种非常广泛且有效的解决方法。以下是一些常见问题以及使用双指针技巧解决: 合并两个有序链表: 使用两个指针分别指向两个链表的头部,逐一比较节点的值,将较小的节点链接到结果链表…

LLM 模型融合实践指南:低成本构建高性能语言模型

编者按:随着大语言模型技术的快速发展,模型融合成为一种低成本但高性能的模型构建新途径。本文作者 Maxime Labonne 利用 mergekit 库探索了四种模型融合方法:SLERP、TIES、DARE和passthrough。通过配置示例和案例分析,作者详细阐…

C++学习之list容器

C++ list基本概念 在C++中,std::list是一个双向链表(doubly linked list)容器,它包含在 <list> 头文件中。下面是一些关于C++ std::list的基本概念: 双向链表结构:std::list是由多个节点组成的双向链表结构,每个节点包含数据元素和指向前一个节点和后一个节点的指…

Java基础API(2) String、StringBuilder详解

文章目录 &#x1f378;1. String类&#x1f349;&#x1f349;1.1 String概述&#x1f349;&#x1f349;1.2 String类的构造方法&#x1f349;&#x1f349;1.3 创建字符串对象的区别对比&#x1f349;&#x1f349;1.4 字符串的比较1.4.1 字符串的比较 &#x1f349;&#x…

【办公类-16-07-01】“2023下学期 周计划-美术专用活动室写法”(python 排班表系列)

背景需求&#xff1a; 又到了开学季&#xff0c;新的活动室安排表出炉了。 为了贴在美术活动室的安排表&#xff0c;我需要转换成班级为单位的安排表&#xff0c;便于批量制作周计划。 主要用途——填写周计划中的特色美术活动室&#xff08;汉字大写&#xff09; 重点说明&am…

Maven私服搭建Nexus3

第一部分&#xff1a;仓库部署 下载地址&#xff1a;https://help.sonatype.com/en/download.html 备用下载链接&#xff0c;部分已经失效了 解压后会有两个文件夹&#xff1a; nexus-3.20.1-01 sonatype-work 访问地址配置路径 \nexus-3.20.1-01\bin\nexus.vmoptions -Xms1…

mac 安装H3C iNode + accessClient mac版

一、下载安装 官网下载地址 https://www.h3c.com/cn/Service/Document_Software/Software_Download/IP_Management/ 可以使用文末参考博文中的账号 yx800 密码 01230123登录下载 选择版本 下载 下载 H3C_iNode_PC_7.3_E0626.zip 文件后&#xff0c;解压下载到的PC端压缩包…

【设计模式】01-装饰器模式Decorator

作用&#xff1a;在不修改对象外观和功能的情况下添加或者删除对象功能&#xff0c;即给一个对象动态附加职能 装饰器模式主要包含以下角色。 抽象构件&#xff08;Component&#xff09;角色&#xff1a;定义一个抽象接口以规范准备接收附加责任的对象。具体构件&#xff08…

静态时序分析:保持时间分析

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在静态时序分析中&#xff0c;保持时间检查约束了触发器时钟引脚&#xff08;时钟路径&#xff09;和输入数据引脚&#xff08;数据路径&#xff09;之间的时序关…

ArcgisForJS如何访问Arcgis Server?

文章目录 0.引言1.准备ArcGIS相关工具2.创建含有ArcSDE地理数据库的MXD文件3.注册ArcSDE地理数据库4.发布数据到Arcgis Server5.ArcgisForJS访问ArcGIS Server数据 0.引言 ArcGIS API for JavaScript 是一个用于在Web和移动应用程序中创建交互式地图和地理空间分析应用的库。它…

量子加密机的工作原理是什么

量子加密机&#xff0c;作为现代加密技术的一大飞跃&#xff0c;正逐渐成为信息安全领域的研究热点。与传统的加密方法相比&#xff0c;量子加密技术以其独特的优势&#xff0c;为信息安全提供了更为坚实的保障。 量子加密的核心在于利用量子力学的特性&#xff0c;尤其是量子纠…

【电子书】计算机课程

资料 wx&#xff1a;1945423050 个人整理了一些互联网电子书 计算机课程 Netty权威指南&#xff08;第2版&#xff09;.epubSharePoint Server 2016 IT Pro 部署指南.epubTensorFlow自然语言处理.epubWebGIS之OpenLayers全面解析.epub从Paxos到Zookeeper分布式一致性原理与实践…

开篇:通过 state 阐述 React 渲染

前段时间开始着手React项目的开发&#xff0c;关于React的一些思想也有了一些体会&#xff08;尤其是同vue之间的差异&#xff09;&#xff0c;特梳理&总结相关内容&#xff0c;便于理解。 ✓ &#x1f1e8;&#x1f1f3; 开篇&#xff1a;通过 state 阐述 React 渲染 说在…

Java SE 入门到精通—基础语法【Java】

敲重点&#xff01; 本篇讲述了比较重要的基础&#xff0c;是必须要掌握的 1.程序入口 在Java中&#xff0c;main方法是程序的入口点&#xff0c;是JVM&#xff08;Java虚拟机&#xff09;执行Java应用程序的起始点。 main方法的方法签名必须遵循下面规范&#xff1a; publ…

游戏配置二级缓存一致性问题解决方案

游戏服务器进程在启动的时候&#xff0c;一般会把所有策划配置数据加载到内存里&#xff0c;将主键以及对应的记录存放在一个HashMap容器里&#xff0c;这称为一级缓存。部分功能可能还需要缓存其他数据&#xff0c;这些称为二级缓存。举个例子&#xff0c;对于如下的玩家升级表…

电脑wifi丢失修复

当你打开电脑突然发现wifi功能不见了&#xff0c;可以先查看一下网卡的状态 在控制面板中找到设备管理器&#xff0c;打开就能找到网络适配器&#xff0c; 我这里是修复过的&#xff0c;wifi丢失后这里可能会显示WALN是丢失的&#xff0c;其他项显示黄色感叹号。 如何修复呢…

跳表是一种什么样的数据结构

跳表是有序集合的底层数据结构&#xff0c;它其实是链表的一种进化体。正常链表是一个接着一个用指针连起来的&#xff0c;但这样查找效率低只有O(n)&#xff0c;为了解决这个问题&#xff0c;提出了跳表&#xff0c;实际上就是增加了高级索引。朴素的跳表指针是单向的并且元素…