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://www.mzph.cn/news/694663.shtml

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

相关文章

Unity Shader ASE基础效果思路与代码(一):遮罩、硬边溶解、光边溶解、UV扰动

Unity Shader ASE基础效果思路与代码(一):遮罩、硬边溶解、光边溶解、UV扰动 文章目录 Unity Shader ASE基础效果思路与代码(一):遮罩、硬边溶解、光边溶解、UV扰动遮罩效果硬边溶解光边溶解UV扰动 遮罩效果 效果展示: 思路与代码&#xff1…

消息队列-RabbitMQ:死信队列

十五、死信队列 1、死信的概念 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 que…

postgres

1.下载postgres 解压后 bin\initdb -D data -U postgres -A password -E utf8 -W // 初始化设置密码这里的账号是postgres pg_ctl.exe register -N "PostgreSQL" -D "F:/pgsql/data" //windows 本地生成服务 pg_ctl -D F:/pgsql/data -l F:/pgsql/logs/pg…

用idea debug时,怎么在某个map对象中再加个key value

实现方式 在用idea 进行 debug时,我们经常喜欢对某行代码打断点,然后对某个对象重新设置值,以快速地实现我们预期想覆盖的场景。通常的方式是用鼠标右键点击某个对象,然后选择Set value进行设置值,但是如果想在map中添…

鸿蒙原生应用元服务实战-发布时多设备选择注意事项

在可公开可获取DevEco Studio最新版本,Stage模型ArkTSAPI9开发元服务HarmonyOS4现不支持平板等;但是元服务在发布时是可选平板、智慧屏电视设备发布。 如果开发人员与上架运营人员沟通不充分的话,上架运营人员可能会选择多设备发布,试一试&am…

bugku3

xxx二手交易市场 进去是这样讴歌乱进的页面 查看了一下源代码也没什么 先随便注册一个账号 然后登录 随便看了看,发现可以修改头像 上传文件 随便上传了一个图片 发现他对图片进行了base64加密 解密后得到是 data:image/jpeg;base64 这里重新修改类型为php&a…

【buuctf--我有一只马里奥】

这是一道关于 ntfs 流查看的题目运行 exe 后会出来一个 1.txt 文件 在 exe 和 1.txt 文件目录下打开终端,输入 notepad 1.txt:flag.txt就可以看到答案了。 这么做的原因见BUUCTF misc 专题(53)[SWPU2019]我有一只马里奥_ntfs flag.txt 马里…

OpenAI新推出的Sora是什么?如何注册使用?

2024年2月16号,OpenAI全新发布文本视频模型Sora,可以通过指令生成特定的视频内容,这对于内容营销、广告宣传、教育教学等行业都将来带来巨大的机遇与挑战。 相信许多人跟小编一样,对此新兴产品跃跃欲试,那么应该如何注…

柔顺控制笔记

参资料: 【1】https://zhuanlan.zhihu.com/p/620918453 【2】https://blog.csdn.net/a735148617/article/details/108564836 【3】https://zhuanlan.zhihu.com/p/126338809 【4】机器人与环境间力_位置控制技术研究与应用_李正义 【5】水下机械臂建模及柔顺控制方法…

编程笔记 Golang基础 014 数据类型概述

编程笔记 Golang基础 014 数据类型概述 一、基本数据类型二、复合数据类型三、引用类型四、特殊类型小结 Go 语言的数据类型系统涵盖了基本数据类型、复合数据类型以及引用类型。 下面将对这些类型进行详细说明: 一、基本数据类型 布尔型 (bool):表示逻…

Javascript中var和let之间的区别

文章目录 一.变量提升(声)二.let和var的区别 区别: 1、var有变量提升,而let没有; 2、let不允许在相同的作用域下重复声明,而var允许; 3、let没有暂时性死区问题; 4、let创建的全局变量没有给window设置对应…

不同种类遥感图像汇总 !!

文章目录 前言 1、可见光遥感图像 2、全色遥感图像 3、多光谱遥感图像 4、高光谱遥感图像 5、红外遥感图像 6、激光雷达图像 7、合成孔径雷达遥感图像 前言 遥感技术是从远距离感知目标反射或自身辐射的电磁波、可见光、红外线,对目标进行探测和识别的技术。遥感卫…

懒汉单例设计模式与饿汉单例设计模式

单例模式即一个类确保只有一个对象,主要用于避免浪费内存 1.饿汉单例设计模式:拿到对象时,对象就早已经创建好了 public class A { private static A a new A(); private A(){ } public static A getObject(){ return a;} } 写法: 把类的构造器私有 在类中自己创建一个对…

【IOS】oc中property属性值详解

1. atomic与nonatomic atomic:原子属性确保属性的读取和写入操作在多线程环境中是线程安全的。这意味着,当一个线程正在读取或写入属性时,其他线程不能同时访问该属性。虽然这提供了线程安全性,但它也引入了性能开销,…

【JAVA高级面试题】运用锁机制实现一个自定义的阻塞队列

文章目录 前言实战演示写在最后 前言 前几天看见一个高级Java面试题,我觉得很有代表意义。既考察了面试者的基本锁机制运用,也了解了阻塞队列的产生实现原理。先分享出来,以供鉴赏。 面试题:实现一个自定义的阻塞队列&#xff0c…

java面试题之spring篇

1.Spring是什么?作用是什么? Spring是一个轻量级的JavaEE框架,它主要解决企业应用中的复杂性问题。Spring框架有三个核心部分:IoC容器、AOP和数据访问/集成层。Spring中的IoC容器提供了一种对象创建和对象之间关系管理的机制&…

Json简介与基本使用

一、JSON简介 JavaScript Object Notation (JSON) 是一种将对象转换为字符串的格式,这种格式易于阅读和编写,同时也易于机器解析和生成。JSON对象的语法格式与JavaScript对象的基本一致,但有所不同,例如JSON中的属性名需加双引号…

React 事件处理 ( this问题 参数传递 ref)

React事件的命名采用小驼峰方式(cameCase),而不是小写 使用JSX语法时你需要传入一个函数作为事件处理函数,而不是一个字符串 你不能通过返回false 的方式阻止默认行为。你必须显示式的使用preventDefault 1 this 需要谨慎对待JSX回调函数中的…

Linux的Ubuntu的APT使用

Linux的Ubuntu的APT使用 apt 介绍 apt 是 Advanced Packaging Tool 的简称,是一款安装包管理工具。在 Ubuntu 下,我们可以使用 apt 命令进行软件包的安装、删除、清理等,类似于 Windows 中的软件管理工具。 Ubuntu 软件操作的相关命令 su…

Android 面试问题 2024 版(其二)

Android 面试问题 2024 版(其二) 六、多线程和并发七、性能优化八、测试九、安全十、Material设计和 **UX/UI** 六、多线程和并发 Android 中的进程和线程有什么区别? 答:进程是在自己的内存空间中运行的应用程序的单独实例&…