当前位置: 首页 > news >正文

Git的SSH密钥配置

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

相关文章:

Git的SSH密钥配置

Git的SSH密钥配置简记Githttps和ssh的区别基本需求SSH密钥类型ED25519 SSH 密钥RSA SSH 密钥查看您是否有现有的 SSH 密钥对设置流程设置user name和emailssh密钥配置检查是否存在ssh Key创建新的ssh key将ssh密钥添加到您的Git帐户验证您是否可以连接使用Git有一段时间了&…...

C++回顾(九)——多继承

9.1 多继承 9.1.1 概念 一个类有多个直接基类的继承关系称为多继承&#xff08;多个父类&#xff09;多继承声明语法 class 派生类名 : 访问控制 基类名1 , 访问控制 基类名2 , … , 访问控制 基类名n {数据成员和成员函数声明 }&#xff1b;类 C 可以根据访问控制同时…...

交流约瑟夫森效应

定理 根据约瑟夫森效应的基本方程&#xff0c;当隧道结两端施加恒定电压V0V_0V0​时&#xff0c;结两边超导体波函数的位相差为 Δϕ2eℏV0tΔϕ0\begin{align} \Delta\phi\frac{2e}{\hbar}V_0t\Delta\phi_0 \end{align} Δϕℏ2e​V0​tΔϕ0​​​ 得到超导电流密度为 JsJcs…...

大数据项目实战之数据仓库:用户行为采集平台——第3章 用户行为日志

第3章 用户行为日志 3.1 用户行为日志概述 用户行为日志的内容&#xff0c;主要包括用户的各项行为信息以及行为所处的环境信息。收集这些信息的主要目的是优化产品和为各项分析统计指标提供数据支撑。收集这些信息的手段通常为埋点。 目前主流的埋点方式&#xff0c;有代码…...

centos6下为Rstudio安装多版本R

之前的R版本太旧,不少包装不上,需要安装新版本的R: R --version R version 3.6.0 (2019-04-26) -- "Planting of a Tree"于是下载最新版R: 因为没有证书,需要加上最后面的参数. wget https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/R-4/R-4.2.2.tar.gz --no…...

TCL 拥抱云原生,实现 IT 成本治理优化

作者&#xff1a;行疾 TCL 工程师团队基于阿里云企业云原生 IT 成本治理方案沉淀了一套成熟的 IT 企业成本治理流程与系统&#xff0c;通过阿里云容器服务提供的开箱即用的成本洞察、资源智能画像等功能&#xff0c;进行业务成本拆分、闲置资源可视化发现&#xff0c;并制定弹性…...

什么是API接口

API接口是指应用程序接口&#xff0c;是一种让不同的应用程序之间进行数据交互的方式。在现代软件开发中&#xff0c;API接口已经成为了必不可少的一部分。它们让开发者们可以将不同的功能组合在一起&#xff0c;同时也让不同的应用程序之间可以相互连接和通讯。API接口的作用A…...

基于单片机的波形发生器设计

单片机可以用来设计各种类型的波形发生器&#xff0c;下面是一种基于单片机的波形发生器设计方案。所需材料&#xff1a;单片机&#xff1a;可以选择常见的Atmel AVR单片机&#xff0c;如ATmega328P等。调制器&#xff1a;可以使用AD9833或AD9851等常用的调制器。时钟&#xff…...

phpmyadmin SQL注入 (CVE-2020-5504)

文章目录 0x01 漏洞介绍0x02 影响版本0x03 漏洞编号0x04 漏洞查询0x05 漏洞环境0x06 漏洞复现方法一:写入shell方法二:报错注入0x07 修复建议免责声明摘抄0x01 漏洞介绍 phpMyAdmin是phpMyAdmin团队的一套免费的、基于Web的MySQL数据库管理工具。该工具能够创建和删除数据库,…...

华为机试题:HJ107 求解立方根(python)

文章目录&#xff08;1&#xff09;题目描述&#xff08;2&#xff09;Python3实现&#xff08;3&#xff09;知识点详解1、input()&#xff1a;获取控制台&#xff08;任意形式&#xff09;的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…...

论文公式符号规范

参考自1&#xff0c;记录论文公式的符号规范&#xff1a; 1.变量和公式符号表达 物理量 物理量符号用英文斜体字母或希腊斜体字母&#xff0c;表示物理量大小用数字加单位&#xff0c;单位使用正体。 例如&#xff1a; m10.05gx10.12ζ35.36mVm10.05 \mathrm{~g} \quad x10…...

哈工大面向服务的软件系统 期末开卷提纲

引言本课程期末考试为开卷&#xff0c;博主2022年期末卷面94/100&#xff0c;总分92.9排名第2/82&#xff0c;现分享复习提纲以供学弟学妹们参考。本提纲仅供参考&#xff0c;切勿进行其他目的的使用。基于2021秋季考试题的思考一、Spring Boot的优点是&#xff1a;1. 非常快速…...

Adding Conditional Control to Text-to-Image Diffusion Models

安全验证 - 知乎知乎&#xff0c;中文互联网高质量的问答社区和创作者聚集的原创内容平台&#xff0c;于 2011 年 1 月正式上线&#xff0c;以「让人们更好的分享知识、经验和见解&#xff0c;找到自己的解答」为品牌使命。知乎凭借认真、专业、友善的社区氛围、独特的产品机制…...

C++从头再来:知识点速通

1. 关于scanf 1.1 读入数字 scanf 的返回值表示成功输入的变量个数&#xff0c;当输入结束时&#xff0c;scanf将无法再次读取数据&#xff0c;返回0 # include <stdio.h> # include <math.h> # include <time.h># define M 1000000; // compute the max,…...

LearnDash Groups学习群组:您需要了解的一切

大约131k 网站使用 LearnDash。因此&#xff0c;毫无疑问&#xff0c;LearnDash是 WordPress 领域中最受欢迎的 LMS。而且&#xff0c;这是因为它具有强大的功能。但让它更受欢迎的是它与大多数第 3 方扩展很好地集成&#xff0c;并且比现有的任何其他 LMS 都更灵活。群组和群组…...

软件开发过程中遇到一个傻嘚业主能让你抓狂

背景 之前的一个网站交付了之后&#xff0c;业主一直未验收&#xff0c;今天忽然间开始了他的扯淡需求调整。 问题1 有一个问题是pdf文件上传显示问题&#xff0c;目前是pdf有一个封面要上传&#xff0c;排序字段可自动调整控制。但是就这么好用的功能&#xff0c;被他给pas…...

信创系统借力小程序应用生态的可能性

随着国内市场需求的不断增长&#xff0c;国产操作系统的应用也开始逐步发展壮大。国产操作系统在与其他操作系统的竞争中&#xff0c;越来越受到用户的青睐。国产操作系统作为一个全新的市场&#xff0c;给应用开发带来了新的机遇和挑战。本文将从国产操作系统应用的现状分析、…...

ISFP型人格的优势和劣势分析(mbti性格测试)

isfp型人格的优势分析ISFP在艺术上具有令人惊叹的天分&#xff0c;他们充沛且敏锐的情感能够轻易捕捉到那些细腻的情感变化。他们具有强大的表现力和感染力&#xff0c;能够通过自己的作品&#xff0c;将情感描绘出来并令观众感同身受&#xff0c;这使得他们在艺术和人文领域能…...

电影《断网》观后感

上周看了电影《断网》这部电影&#xff0c;题材是网络攻击与防范的故事&#xff0c;这样的题材距离我们很远&#xff0c;又离我们很近&#xff0c;我们每天都在用网络&#xff0c;生活中也离不开网络&#xff0c;所以它离我们很近&#xff0c;但是真正涉及到网络攻击时&#xf…...

查看python第三方库的依赖pkgs

课题组的服务器不给连外网&#xff0c;安装python第三方库就只能手动离线安装。但是python第三方库可能会迭代依赖&#xff0c;单纯的pip show [pkg]是看不出来的…… 参考链接&#xff1a;查看python第三方库的依赖 https://blog.csdn.net/qq_38316655/article/details/127943…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...