Git的SSH密钥配置

news2025/7/30 5:07:28

Git的SSH密钥配置简记

    • Git
      • https和ssh的区别
      • 基本需求
    • SSH密钥类型
      • ED25519 SSH 密钥
      • RSA SSH 密钥
    • 查看您是否有现有的 SSH 密钥对
    • 设置流程
      • 设置user name和email
      • ssh密钥配置
        • 检查是否存在ssh Key
        • 创建新的ssh key
        • 将ssh密钥添加到您的Git帐户
      • 验证您是否可以连接

使用Git有一段时间了,之前也分享过一些相关文章记录,但一直都想对初始设置做一篇记录,毕竟 pushpull操作经常使用,也都熟能生巧了。但初始设置用的次数一般都很少,忘记再查也是很麻烦,这里就根据我自己的经验和之前查到的资料做一个简单记录,希望对初学者有帮助。这里主要以GitLab为例,但GitHub的步骤也大致相同。
参考链接:

  1. 一个GitLab文档
  2. https://blog.csdn.net/inthat/article/details/109406553
  3. https://blog.csdn.net/qq_42680332/article/details/119001765

Git

Git是一个分布式版本控制系统,这意味着你可以在本地工作,然后将更改共享或“推送”到服务器。

https和ssh的区别

很多朋友在用github管理项目的时候,都是直接使用https url克隆到本地,当然也有有些人使用ssh url克隆到本地。
然而,为什么绝大多数人会使用https url克隆呢?
这是因为,使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地就好了。而使用ssh url克隆却需要在克隆之前先配置和添加好ssh key

因此,如果你想要使用ssh url克隆的话,你必须是这个项目的拥有者。否则你是无法添加ssh key的。

所以两者的区别为:

  1. 前者可以随意克隆github上的项目,而不管是谁的;而后者则是你必须是你要克隆的项目的拥有者或管理员,且需要先添加ssh key,否则无法克隆。
  2. https urlpush的时候是需要验证用户名和密码的;而ssh在push的时候,是不需要输入用户名的,如果配置ssh key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。

基本需求

要使用ssh与GitLab通信,您需要:

  • OpenSSH客户端,预装在GNU/Linux、macOS和Windows 10上。
  • ssh版本6.5或更高版本。早期版本使用MD5签名,这并不安全。

要查看系统上安装的ssh版本,请运行ssh -V,如图。

SSH密钥类型

要与GitLab通信,您可以使用以下SSH密钥类型:

  • ED25519
  • RSA
  • DSA(在GitLab 11.0中已弃用)
  • ECDSA(如Go的实用密码学中所述,与DSA相关的安全问题也适用于ECDSA)

管理员可以限制允许的密钥及其最小长度。

ED25519 SSH 密钥

《Practical Cryptography with Go》一书表明,ED25519密钥比RSA密钥更安全、性能更高。
OpenSSH 6.5在25519年引入了ED2014 ssh密钥,它们应该在大多数操作系统。

RSA SSH 密钥

现有文档表明,ED25519比RSA更安全。
如果使用RSA密钥,美国国家科学技术研究院在出版物800-57 第3部分(PDF)中建议密钥大小至少为2048位。默认密钥大小取决于您的版本。
有关详细信息,请查看已安装命令的页面ssh-keygenmanssh-keygen

查看您是否有现有的 SSH 密钥对

在创建密钥对之前,请查看密钥对是否已存在。

  1. 在Windows、Linux或macOS上,转到您的主目录。
  2. 转到子目录。如果子目录不存在,您要么不在主目录中,要么以前从未使用过。在后一种情况下,您需要生成 SSH 密钥对.ssh/.ssh/ssh
  3. 查看是否存在具有以下格式之一的文件:
算法公钥私钥
ED25519(首选)id_ed25519.pubid_ed25519
RSA(至少 2048 位密钥大小)id_rsa.pubid_rsa
DSA(已弃用)id_dsa.pubid_dsa
ECDSAid_ecdsa.pubid_ecdsa

设置流程

设置user name和email

首先在使用SSH之前要先设置全局范围的用户名:user name邮箱:email

# 查看配置
git config --list
git config --global -l
git config -l
#git status
git config --global user.name "docker"
git config --global user.email "xxx@yeah.net"

ssh密钥配置

检查是否存在ssh Key

cd ~/.ssh
ls

看是否存在id_rsaid_rsa.pub,或者类似但秘钥类型不同的文件,如果存在,说明已经有ssh Key。没有的话,创建新的ssh key。

创建新的ssh key

  1. 打开终端。
  2. 键入ssh-keygen -t,后跟密钥类型和可选注释。此注释包含在创建的文件中。
    您可能需要使用电子邮件地址进行评论。
    例如,对于ED25519:
ssh-keygen -t ed25519 -C "<comment>"

-t ed25519:密钥的类型;-C "<comment>":用于识别密钥的注释,一般大家都写的是Email邮箱。
对于2048位RSA:

ssh-keygen -t rsa -b 2048 -C "<comment>"
  1. 按Enter键。将显示类似于以下内容的输出:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
  1. 接受建议的文件名和目录,除非您正在生成部署密钥或想要保存在存储其他密钥的特定目录中。
    您还可以将SSH密钥对专用于特定主机。
  2. 指定密码:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
  1. 将显示一条确认信息,其中包括有关文件存储位置的信息。

完成后会在.ssh目录生产两个文件:id_ed25519(私有密钥)id_ed25519.pub(公开密钥)

将ssh密钥添加到您的Git帐户

  1. 复制公钥文件的内容。您可以手动执行此操作,也可以使用脚本执行此操作。
    例如,要将ED25519密钥复制到剪贴板:
    macOS:
tr -d '\n' < ~/.ssh/id_ed25519.pub | pbcopy

Linux(需要软件包):xclip

xclip -sel clip < ~/.ssh/id_ed25519.pub

Git Bash on Windows:

cat ~/.ssh/id_ed25519.pub | clip

替换为您的文件名。例如,用于RSA:id_rsa.pub替换上面的id_ed25519.pub
2. 登录GitLab。
3. 在右上角,选择您的头像。
4. 选择首选项。
5. 在左侧边栏中,选择“ssh 密钥”。
6. 在“密钥”框中,粘贴公钥的内容。如果手动复制了密钥,请确保复制整个密钥,以ssh-ed25519或ssh-rsa开头,可能以注释结尾。
7. 在“标题”文本框中,键入说明,如“工作笔记本电脑”或“家庭工作站”。
8. 可选的。在“失效时间”框中选择失效日期。(在GitLab 12.9中引入。)过期日期仅为信息,并不阻止您使用关键。但是,管理员可以查看过期日期和在删除键时使用它们作为指导。

  • GitLab每天在UTC时间凌晨02:00检查所有SSH密钥。它会通过电子邮件发送当前日期到期的所有SSH密钥的到期通知。(在GitLab 13.11中引入)
  • GitLab每天在UTC时间凌晨01:00检查所有SSH密钥。它会通过电子邮件发送计划在七天后过期的所有SSH密钥的到期通知。(在GitLab 13.11中引入)
  1. 选择“添加密钥”。

验证您是否可以连接

  1. 打开终端并运行以下命令,替换为您的GitLab实例URL:gitlab.example.com
ssh -T git@gitlab.example.com
  1. 如果这是您第一次连接,则应验证GitLab主机的真实性。如果您看到类似以下内容的消息:
The authenticity of host 'gitlab.example.com (35.231.145.151)' can't be established.
ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab.example.com' (ECDSA) to the list of known hosts.

键入yes并按回车键。
3. 再次运行该命令ssh -T git@gitlab.example.com。您应该会收到*欢迎来到 GitLab,@username!*消息。

如果未显示欢迎消息,可以通过在详细模式下运行ssh来进行故障排除:

ssh -Tvvv git@gitlab.example.com

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

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

相关文章

代码随想录-51-110.平衡二叉树

目录前言题目1.求高度和深度的区别节点的高度节点的深度2. 本题思路分析&#xff1a;3. 算法实现4. pop函数的算法复杂度5. 算法坑点前言 在本科毕设结束后&#xff0c;我开始刷卡哥的“代码随想录”&#xff0c;每天一节。自己的总结笔记均会放在“算法刷题-代码随想录”该专…

OpenCV入门(五)快速学会OpenCV4文字绘制边界填充

OpenCV入门&#xff08;五&#xff09;快速学会OpenCV4文字绘制&边界填充 1.文字绘制 OpenCV中除了提供绘制各种图形的函数外&#xff0c;还提供了一个特殊的绘制函数&#xff0c;即在图像上绘制文字。 这个函数是putText()&#xff0c;它是命名空间cv2中的函数&#xff…

(二十三)操作系统-多生产者·多消费者问题

文章目录一、问题描述二、问题分析1. 关系分析2. 整理思路三、实现1. 代码2.如果不要互斥信号量3. 将盘子&#xff08;缓冲区&#xff09;容量设为2四、总结一、问题描述 桌子上有一只盘子&#xff0c;每次只能向其中放入一个水果。爸爸专向盘子中放苹果&#xff0c;妈妈专向盘…

用强化学习神包trl轻松实现GPT2可控文本生成

来源&#xff1a;投稿 作者&#xff1a;Sally can wait 编辑&#xff1a;学姐 模型github: lvwerra/trl: Train transformer language models with reinforcement learning. (github.com)https://github.com/lvwerra/trl 这个项目是复现 ”Fine-Tuning Language Models from H…

C++vector 简单实现

一。概述 vector是我们经常用的一个容器&#xff0c;其本质是一个线性数组。通过对动态内存的管理&#xff0c;增删改查数据&#xff0c;达到方便使用的目的。 作为一个线性表&#xff0c;控制元素个数&#xff0c;容量&#xff0c;开始位置的指针分别是&#xff1a; start …

Hive---拉链表

拉链表 文章目录拉链表定义用途案例全量流程增量流程合并过程第一步第二步第三步案例二&#xff08;含分区&#xff09;创建外部表orders增量分区表历史记录表定义 拉链表是一种数据模型&#xff0c;主要是针对数据仓库设计中表存储数据的方式而定义的&#xff0c;顾名思义&am…

从零开始学GeoServer源码十一(如何处理多个文件解析器Multipart Resolver引起的冲突问题)

目录前言1.现象2.排查问题3.找到问题4.解决问题5.总结前言 本文起源于我们遇到的一个问题&#xff0c;本来 GeoServer 使用的好好的&#xff0c;但是有天突然发现&#xff0c;无法在 GeoServer 中上传样式的 sld 文件了&#xff0c;报错 “No Multipart-config for Servlet” …

java.lang.IllegalArgumentException: itemView may not be null

报错截图&#xff1a;场景介绍&#xff1a;在使用recycleView 自动递增数据&#xff0c;且自动滚动到最新行&#xff1b; 当数据达到273条 时出现ANR&#xff1b;项目中 全部的列表适配器使用的三方库&#xff1a;BaseRecyclerViewAdapterHelper &#xff08;很早之前的项目&am…

《SQL基础》16. 锁

锁锁全局锁表级锁表锁元数据锁意向锁行级锁行锁间隙锁临键锁锁 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并…

uniapp在线升级关联云空间

升级中心 uni-upgrade-center - App&#xff1a; https://ext.dcloud.net.cn/plugin?id4542 App升级中心 uni-upgrade-center文档&#xff1a; https://uniapp.dcloud.net.cn/uniCloud/upgrade-center.html#uni-upgrade-center-app 升级中心 uni-upgrade-center - Admin&#…

Ka频段需要更多带宽?

随着全球连接需求的增长&#xff0c;许多卫星通信(satcom)系统日益采用Ka频段&#xff0c;对数据速率的要求也水涨船高。目前&#xff0c;高性能信号链已经能支持数千兆瞬时带宽&#xff0c;一个系统中可能有成百上千个收发器&#xff0c;超高吞吐量数据速率已经成为现实。 另…

JavaWeb—HTML

目录 1、B/S 软件的结构 2、前端的开发流程 3、网页的组成部分 4、HTML 简介 5、创建 HTML 文件 6、HTML 文件的书写规范 7、HTML 标签介绍 8、常用标签介绍 8.1、font 字体标签 8.2、特殊字符 8.3、标题标签 8.4、超链接 &#xff08; **** 重 点 &#xff0c;必 …

如何实现jwt鉴权机制之详解

jwt鉴权一是什么headerpayloadSignature二、如何实现生成 token校验token三、优缺点优点&#xff1a;缺点&#xff1a;一是什么 JWT&#xff08;JSON Web Token&#xff09;&#xff0c;本质就是一个字符串书写规范&#xff0c;如下图&#xff0c;作用是用来在用户和服务器之间…

Wannacrypt蠕虫老树开花?又见Wannacrypt

Wannacrypt蠕虫是一个在2017年就出现的远古毒株&#xff0c;其利用永恒之蓝漏洞降维打击用户服务器&#xff0c;而后进行扩散勒索&#xff0c;曾经一度风靡全球&#xff0c;可谓是闻者伤心&#xff0c;听着落泪&#xff0c;因为这玩意解密是不可能 解密的。 而2023年的今天&am…

MCM 箱模型建模方法及大气 O3 来源解析实用干货

OBM 箱模型可用于模拟光化学污染的发生、演变过程&#xff0c;研究臭氧的生成机制和进行敏感性分析&#xff0c;探讨前体物的排放对光化学污染的影响。箱模型通常由化学机理、物理过程、初始条件、输入和输出模块构成&#xff0c;化学机理是其核心部分。MCM (Master Chemical M…

【每天学习一点新知识】JNDI注入

什么是JNDIJNDI是Java的一种API&#xff0c;为我们提供了查找和访问各种命名和目录服务的通用统一的接口。通过JNDI统一接口我们可以来访问各种不同类型的服务&#xff0c;例如远程方法调用&#xff08;RMI&#xff09;&#xff0c;通用对象请求代理体系结构&#xff08;CORBA&…

Qt QTreeView简单使用

QT-QTreeView使用方法 QTreeView: 用于显示树状结构数据&#xff0c;适用于树状结构数据的操作。 一、初始化 ​ 利用QStandardlternModel来初始化数据&#xff0c;标准的基于项数据的数据模型类&#xff0c; 每个项数据可以是任何数据类型。 // 初始化model QStandardItem…

工作实战之拦截器模式

目录 前言 一、结构中包含的角色 二、拦截器使用 1.拦截器角色 a.自定义拦截器UserValidateInterceptor&#xff0c;UserUpdateInterceptor&#xff0c;UserEditNameInterceptor b.拦截器配置者UserInterceptorChainConfigure&#xff0c;任意组装拦截器顺序 c.拦截器管理者…

VM安装FydeOS16.0

准备工作 1、已安装VMware Workstation虚拟机&#xff1b; 2、下载好系统文件&#xff1b; 3、打开VM、新建虚拟机&#xff1b; 一、下载 https://fydeos.com/download/vm 我选择的镜像1。等下载完成&#xff0c;我这感觉下载速度不快&#xff0c;通过onedrive下载要快。 …

Jfrog 搭建本地maven仓库以及上传Android库

Jfrog 下载 安装包下载地址&#xff1a;Download Artifactory OSS | JFrog 如果是想下载之前的版本&#xff0c;可以点击上面的Get code source &#xff0c;如果是最新版本&#xff0c;直接点下面的下载就好。下面以Linux安装为例。 Jfrog安装 对于Linux而言&#xff0c;其实…