经验笔记:从生成 SSH 密钥到成功连接测试(以Gitee为例)

news2024/11/20 8:45:45

从生成 SSH 密钥到成功连接测试的经验笔记(以Gitee为例)

1. 生成 SSH 密钥对
  1. 选择合适的加密算法

    • ED25519

      • 密钥长度:私钥 256 位(32 字节),公钥 256 位(32 字节),签名 512 位(64 字节)。
      • 安全性:提供 128 位的安全性,适用于大多数场景。
      • 性能:高效,适用于资源受限的设备。
      • 命令
        ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519_gitee
        
    • RSA

      • 密钥长度:建议使用 4096 位(至少 2048 位)。
      • 安全性:提供较高的安全性,但性能略低于 ED25519。
      • 命令
        ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa_gitee
        
    • ECDSA

      • 支持的曲线
        • nistp256:256 位密钥长度,提供 128 位的安全性。
        • nistp384:384 位密钥长度,提供 192 位的安全性。
        • nistp521:521 位密钥长度,提供 256 位的安全性。
      • 安全性:根据所选曲线的不同,提供不同程度的安全性。
      • 命令
        ssh-keygen -t ecdsa -b 256 -C "your_email@example.com" -f ~/.ssh/id_ecdsa_gitee
        
    • Ed448

      • 密钥长度:私钥 448 位(56 字节),公钥 448 位(56 字节),签名 912 位(114 字节)。
      • 安全性:提供 224 位的安全性,适用于需要更高安全性的场景。
      • 命令
        ssh-keygen -t ed448 -C "your_email@example.com" -f ~/.ssh/id_ed448_gitee
        
  2. 生成 Gitee 的 ED25519 密钥对

    ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519_gitee
    

    在生成密钥对时,系统会提示你输入一个 passphrase。请务必记住这个 passphrase,它用于保护你的私钥。

  3. 邮箱命名最佳实践

    • 包含用户名和设备信息:将用户名和设备信息包含在邮箱地址中,可以清楚地知道这把密钥是哪个用户在哪个设备上生成的。例如:

      ssh-keygen -t ed25519 -C "alice@laptop"
      
    • 包含用途:如果密钥用于特定的项目或服务,可以在邮箱地址中包含这些信息。例如:

      ssh-keygen -t ed25519 -C "alice@projectA"
      
    • 包含日期:在邮箱地址中包含生成日期,可以帮助你追踪密钥的生命周期。例如:

      ssh-keygen -t ed25519 -C "alice@laptop-20231001"
      
    • 包含电子邮件地址:使用电子邮件地址作为邮箱地址的一部分,可以方便地与他人共享密钥时进行识别。例如:

      ssh-keygen -t ed25519 -C "alice@example.com"
      
    • 组合信息:可以将上述信息组合起来,创建更详细的邮箱地址。例如:

      ssh-keygen -t ed25519 -C "alice@laptop-20231001-projectA"
      
  4. 查看生成的密钥文件

    ls ~/.ssh
    

    你应该看到以下文件:

    • id_ed25519_gitee
    • id_ed25519_gitee.pub
2. 配置 ~/.ssh/config 文件
  1. 编辑 ~/.ssh/config 文件
    # Gitee
    Host gitee.com
      HostName gitee.com
      User git
      IdentityFile ~/.ssh/id_ed25519_gitee
    
3. 将公钥添加到 Gitee
  1. 复制公钥内容

    cat ~/.ssh/id_ed25519_gitee.pub
    
  2. 登录 Gitee 账户

    • 进入 Gitee 的设置页面。
    • 找到“SSH 公钥”或“部署密钥”部分。
    • 粘贴你复制的公钥内容,并保存。
4. 测试连接
  1. 测试与 Gitee 的连接

    ssh -T git@gitee.com
    
  2. 首次连接提示:如果这是你第一次连接到该服务器,系统会显示一条消息,询问你是否要继续连接。这条消息通常看起来像这样:

    The authenticity of host 'gitee.com (IP_ADDRESS)' can't be established.
    RSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
    

    Gitee SSH 密钥指纹
    以下是 Gitee 的公钥指纹:
    SHA256:+ULzij2u99B9eWYFTw1Q4ErYG/aepHLbu96PAUCoV88 (ED25519)
    SHA256:meTsVSCgOas8fBnJyx8EPlUJr6iQ96riFmCFPfUkDtU (RSA)
    SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc (ECDSA)

  3. 确认并保存主机信息:输入 yes 并按回车键。这一步骤会让 SSH 客户端将服务器的公钥添加到你的 ~/.ssh/known_hosts 文件中。这意味着下次你再连接时,SSH 客户端可以验证服务器的身份,从而提高安全性。

  4. 验证成功的信息:如果一切正常,你应该会看到类似如下所示的消息:

    Hi username! You've successfully authenticated, but Gitee does not provide shell access.
    
  5. 错误处理:如果你遇到任何错误,比如认证失败或无法建立连接,请检查你的 SSH 密钥是否已正确添加到 Gitee 账户中,或者是否有网络问题阻止了你连接到 Gitee。

5. 克隆或推送代码

5.1 方法一:

  1. 克隆 Gitee 仓库

    git clone git@gitee.com:username/repo.git
    
    • git@gitee.com:username/repo.git 是一个SSH URL,用于通过SSH协议访问Gitee上的Git仓库。这个URL的各个部分有不同的含义:
  2. 推送代码到 Gitee

    cd repo
    git remote add origin git@gitee.com:username/repo.git
    git push origin main -u 
    # git push origin main --set-upstream
    
    • -u 是一个选项,它的全称是 --set-upstream,作用是将本地分支(在这个例子中是 main)与远程仓库中的相应分支(origin/main)建立关联。
    • 最佳实践:在第一次推送(push)时设置本地主分支(main)与远程主分支(orgin)之间的上下游关系。

5.2 方法二:

解析 git@gitee.com:username/repo.git
  1. git@

    • 这是SSH协议中的用户名。在Gitee(以及其他类似的Git托管服务)中,用户名通常是 git。这是因为Gitee的服务器使用 git 用户来处理所有的Git请求。
  2. gitee.com

    • 这是Gitee的域名。表示你要连接的服务器地址。
  3. :

    • 这个冒号是分隔符,用于区分服务器地址和仓库路径。
  4. username

    • 这是你在Gitee上的用户名。表示你拥有的仓库所属的账户。
  5. /repo.git

    • 这是你在Gitee上创建的仓库名称。repo 是仓库的名字,.git 是Git仓库的标准后缀。
完整URL的含义
  • git@gitee.com:username/repo.git
    • 这个URL表示你通过SSH协议连接到 gitee.com 服务器,使用 git 用户名,访问 username 账户下的 repo 仓库。

总结

通过以上步骤,你可以生成并配置 SSH 密钥对,确保能够顺利连接到 Gitee。具体步骤包括:

  1. 生成 SSH 密钥对:选择合适的加密算法,使用 ssh-keygen 命令生成 Gitee 的 ED25519 密钥对,并设置一个 passphrase。同时,使用有意义的邮箱地址命名密钥,以便于管理和识别。
  2. 配置 ~/.ssh/config 文件:编辑 ~/.ssh/config 文件,指定 Gitee 主机和对应的私钥文件。
  3. 将公钥添加到 Gitee:复制公钥内容并将其添加到 Gitee 的设置中。
  4. 测试连接:使用 ssh -T 命令测试与 Gitee 的连接。
  5. 克隆或推送代码:使用 Git 命令克隆和推送代码到 Gitee。

希望这篇经验笔记对你有所帮助!

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

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

相关文章

RabbitMQ1:初识MQ

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

AI 提示词(Prompt)入门 十:最佳实践|详细询问,提供细节!

1、原则解释 当与 ChatGPT 交流时,提供具体和详细的信息非常重要。 这样做可以帮助 ChatGPT 更准确地理解你的需求和上下文,从而生成更相关和有用的回答 明确的信息可以包括具体的问题背景、相关领域的说明、你所期望的答案类型等。 2、如何实践 明…

实验十三 生态安全评价

1 背景及目的 生态安全是生态系统完整性和健康性的整体反映,完整健康的生态系统具有调节气候净化污染、涵养水源、保持水土、防风固沙、减轻灾害、保护生物多样性等功能。维护生态安全对于人类生产、生活、健康及可持续发展至关重要。随着城市化进程的不断推进&…

怎样实现跨部门和跨地区的数据共享?

随着企业规模的扩大和业务的多样化,不同部门和地区之间的数据共享变得越来越重要。实时数据同步作为保证数据准确性和完整性的重要手段,被广泛应用于各行各业。那不同部门和不同地区怎么实现共享数据呢? 一、前期数据准备 前期数据上需要建…

国家工信安全中心:公共数据授权运营平台技术要求(附下载)

2023年11月23日,第二届全球数字贸易博览会“数据要素治理与市场化论坛”于杭州成功召开,国家数据局党组书记、局长刘烈宏,浙江省委常委、常务副省长徐文光出席会议并致辞。会上,国家工业信息安全发展研究中心(以下简称…

C语言数据结构——详细讲解 双链表

从单链表到双链表:数据结构的演进与优化 前言一、单链表回顾二、单链表的局限性三、什么是双链表四、双链表的优势1.双向遍历2.不带头双链表的用途3.带头双链表的用途 五、双链表的操作双链表的插入操作(一)双链表的尾插操作(二&a…

【ArcGISPro】地理配准-影像校正

由于大部分数据安全性,以下是随意下载的图片,仅展示配置操作 地图-地理配准 添加控制点 修改控制点 可以导入、导出、添加和删除控制点 保存 关闭地理配准

ReNamer Pro 7.5 中文绿色便携专业版-文件重命名工具

前言 我们日常生活和工作中所涉及的文件数量日益增多。无论是图片、音频、视频还是各种文档,这些文件在存储、管理和分享时,都需要有一个清晰、有序的文件命名规则。然而,手动重命名大量文件不仅耗时耗力,而且容易出错&#xff0c…

PgSQL即时编译JIT | 第1期 | JIT初识

PgSQL即时编译JIT | 第1期 | JIT初识 JIT是Just-In-Time的缩写,也就是说程序在执行的时候生成可以执行的代码,然后执行它。在介绍JIT之前,需要说下两种执行方式:解释执行和编译执行。其中解释执行是通过解释器,将代码逐…

力扣-Hot100-数组【算法学习day.37】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…

DataStream编程模型之数据源、数据转换、数据输出

Flink之DataStream数据源、数据转换、数据输出(scala) 0.前言–数据源 在进行数据转换之前,需要进行数据读取。 数据读取分为4大部分: (1)内置数据源; 又分为文件数据源; socket…

爬虫开发工具与环境搭建——使用Postman和浏览器开发者工具

第三节:使用Postman和浏览器开发者工具 在网络爬虫开发过程中,我们经常需要对HTTP请求进行测试、分析和调试。Postman和浏览器开发者工具(特别是Network面板和Console面板)是两种最常用的工具,能够帮助开发者有效地捕…

vue2侧边导航栏路由

<template><div><!-- :default-active"$route.path" 和index对应其路径 --><el-menu:default-active"active"class"el-menu-vertical-demo"background-color"#545c64"text-color"#fff"active-text-col…

时代变迁对传统机器人等方向课程的巨大撕裂

2020年之后&#xff0c;全面转型新质课程规划&#xff0c;传统课程规划全部转为经验。 农耕-代表性生产关系-封建分配制度主要生产力-人力工业-代表性生产关系-资本分配制度工业分为机械时代&#xff0c;电气时代&#xff0c;信息时代&#xff1b;主要生产力-人力转为人脑&…

JVM类加载过程-Loading

一、Class对象的生命周期 .class文件是如何加载到内存中:.class文件是ClassLoader通过IO将文件读到内存,再通过双亲委派的模式进行Loading,再Linking、以及Initializing,代码调用等一系列操作后,进行GC,组成完整的生命周期; 二、双亲委派模式(Loading的过程): 1、类…

BERT--公认的里程碑

前言 如果说&#xff0c;让我选Transformer架构的哪个模型最深入人心&#xff0c;我将毫不犹豫的选择BERT&#xff01; BERT 的意义在于&#xff0c;从大量无标记的数据集中训练得到的深度模型&#xff0c;可以限制提高各项自然语言处理任务的准确率。 BERT 在当时&#xff0…

<项目代码>YOLOv8 瞳孔识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

每日OJ题_牛客_天使果冻_递推_C++_Java

目录 牛客_天使果冻_递推 题目解析 C代码 Java代码 牛客_天使果冻_递推 天使果冻 描述&#xff1a; 有 n 个果冻排成一排。第 i 个果冻的美味度是 ai。 天使非常喜欢吃果冻&#xff0c;但她想把最好吃的果冻留到最后收藏。天使想知道前 x个果冻中&#xff0c;美味…

果韵 2.0.1| 听歌神器,双端支持,支持下载歌曲和歌词

果韵是一款支持Windows和安卓双端的音乐播放器&#xff0c;支持自定义音源&#xff0c;界面简洁。用户可以通过缓存下载歌曲和歌词。为了使用这些功能&#xff0c;需要先进行音源导入。通过设置中的存储设置&#xff0c;将缓存文件夹移动到download目录下&#xff0c;之后缓存的…

Allegro从.brd文件中导出器件ball map

Step 1&#xff08;可选&#xff09;&#xff1a;设置网络颜色 Step2&#xff1a;File->Export->Symbol Spreadsheet\ Step3&#xff1a;Primary text选择Net Name Step 4&#xff1a;在.brd所有文件夹下生成一个ball map文件&#xff0c;其中网络颜色与Step 1一致。ba…