【计算机基础】Git系列2:配置多个SSH

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处

文章目录

  • 一、前言
  • 二、配置多个SSH Key
    • 步骤1、生成多对秘钥
    • 步骤2、保存多个SSH Key
    • 步骤3、 添加公钥到远程仓库平台
    • 步骤4、测试SSH连接
    • 步骤5、拉取远程demo
  • 三、解决SSH公钥未生效的问题


一、前言

📝SSH简介
SSH是Secure Shell(安全外壳协议)的缩写,建立在应用层和传输层基础上的安全协议。为了便于访问github,要生成ssh公钥,这样就不用每一次访问github都要输入用户名和密码。简单来说就是方便我们拉取推送代码。

📝配置多个SSH Key的原因
大多数时候,我们的会有很多的git host,比如公司gitlab、github、oschina等,那我们就需要在本地配置多个ssh key,通过为不同的Host配置不同的IdentityFile,可以让Git在不同平台使用多个SSH Key进行认证和授权。做法如下(以公司gitlab和github为例):

二、配置多个SSH Key

步骤1、生成多对秘钥

1、为公司生成一对秘钥ssh key

ssh-keygen -t rsa -C '邮箱' -f ~/.ssh/gitlab_rsa

2、为github生成一对秘钥ssh key:

ssh-keygen -t rsa -C '邮箱' -f ~/.ssh/github_rsa

3、为gitee生成一对秘钥ssh key:

ssh-keygen -t rsa -C '邮箱'' -f ~/.ssh/gitee_rsa

注意:三个邮箱要不相同,但是邮箱没有必要跟注册时候完全一致

步骤2、保存多个SSH Key

为了使用多个SSH Key,你需要为每个Key创建不同的配置,用于配置多个不同的host使用不同的ssh key。在~/.ssh目录下,打开或创建一个名为config的文件(无后缀名),并添加以下内容(示例):
在这里插入图片描述
其中Hos和HostName填写git服务器的域名,IdentityFile指定私钥的路径。经过实测发现,也可以不用这个config。

步骤3、 添加公钥到远程仓库平台

将生成的公钥(id_rsa.pub 或者其他指定的公钥文件)内容复制到相应的远程仓库平台的账户设置中。不同平台的步骤可能略有不同,但一般都会提供一个界面来添加SSH Key。

步骤4、测试SSH连接

运行以下命令来测试SSH连接是否配置正确:

ssh -T git@github.com   #使用github的Key
ssh -T git@gitlab.com   #使用gitlab的Key

如果显示类似 “Hi username! You’ve successfully authenticated” 的欢迎消息,说明连接成功。
否则就是失败的:
在这里插入图片描述
验证通过后即可愉快的clone代码了。

步骤5、拉取远程demo

首先复制想要拉下来的demo地址,然后在配置好公钥之后就可以拉取远程仓库的demo了,命令如下:

Git clone 仓库地址

在这里插入图片描述

三、解决SSH公钥未生效的问题

配置公钥的目的:是为了在clone远程demo的时候不需要输入密码,但是很多时候会碰到即使配置了公钥还需要密码的情况,这是为什么?
问题描述:配置了ssh秘钥,但在登录时还是需要密码,考虑是不是秘钥设置错误了?即:解决SSH免密登录配置成功后不生效的问题。
在这里插入图片描述
在这里插入图片描述
解决方法:如果在使用SSH公钥进行身份验证时,Git 仍然要求输入密码,有几种可能的原因:

  1. 公钥未正确添加到GitLab:请确认将正确的公钥(例如 id_rsa.pub)添加到 GitLab 账户的 SSH Keys 中。检查公钥文件的内容是否正确复制到了 GitLab 界面上并保存。

  2. SSH代理未正确配置:SSH代理可能没有正确加载SSH密钥。尝试重新加载SSH密钥,可以运行以下命令:

   ssh-add -D   # 清除现有的 SSH 密钥ssh-add     # 重新加载 SSH 密钥
  1. SSH配置文件有误:再次检查 ~/.ssh/config 配置文件,确保Host、HostName、User 和 IdentityFile 的设置无误。确认文件路径和文件名是否与实际的私钥文件相匹配。

  2. Git仓库URL错误:确保在Git克隆命令中使用了正确的SSH URL,例如:

git clone git@gitlab.com:<username>/<repository>.git
  1. GitLab服务器配置问题:在某些情况下,GitLab服务器可能存在一些配置问题,导致身份验证失败。请确保GitLab网站上的SSH设置正确启用了SSH密钥身份验证,并且没有其他限制。

如果以上解决方法都不起作用,建议检查系统日志或GitLab的错误日志以获取更多详细的错误信息,命令如下。

ssh -vvv git@gitlab.com 

同理,如果在其他远程仓库没有连上,也可以基于上述命令调出日志来检查一下。
首先通过上述命令查看日志发现存在的问题,找不到公钥的文件,说明命名方式出问题了。
在这里插入图片描述
那么更改成它索引的文件名即可。根据上图提示我们将.ssh中的公钥文件的名字改为了id_dsa。然后再clone,发现可以用了,能连的上了。经过实测,三个平台均可以进行顺利的clone操作。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
根据上面的方法,我们可以得出结论,出现仍要密码的问题时,第一步先去看看日志,找出病因,然后对症下药,其中config文件并不是必须得,看网上的说法,这个跟版本有关,新版的git都可以不用config,但是加上了会对clone有影响。

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

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

相关文章

大数据课程L7——网站流量项目的操作步骤

文章作者邮箱&#xff1a;yugongshiyesina.cn 地址&#xff1a;广东惠州 ▲ 本章节目的 ⚪ 了解网站流量项目的Spark与HBase整合&#xff1b; ⚪ 掌握网站流量项目的实时流业务处理&#xff1b; 一、 Spark 与 HBase 整合基础 1. 实现步骤&#xff1a; 1. 启动…

各个国家商品条形码

什么是商品条码&#xff1f; 我们常说的条形码其实就是商品条码&#xff0c;它是由一组规则排列的条、空及其对应代码组成&#xff0c;表示商品代码的条码符号&#xff0c;主要用于零售商品、储运包装商品、物流单元、参与方位置等的代码与条码标识。通俗来讲&#xff0c;商品…

Antmonsido(AMS)早期预售(IDO)如何参与?

Antmonsido是Kucoin两年前开始孵化的项目&#xff0c;第一款全链游戏已经开发完成&#xff0c;项目的NFT已经上过币安&#xff0c;前两周刚完成180万美元融资&#xff0c;投资机构也都很强势&#xff0c;IDO注册人数超过三万&#xff0c;海外热度超高&#xff0c;19号上GATE&am…

Java Semaphore使用例子和流程

目录 Semaphore例子代码和输出semaphore.acquire();semaphore.release(); Semaphore semaphore : 英[ˈseməfɔː(r)] 美[ˈseməfɔːr] n. 旗语; 信号标; v. 打旗语; (用其他类似的信号系统)发信号; [例句]Semaphore was widely used at sea, before the advent of electr…

交换机上的PoE技术

交换机的PoE代表Power over Ethernet&#xff08;以太网供电&#xff09;&#xff0c;它是一种技术&#xff0c;允许通过以太网电缆传输数据的同时为连接的设备提供电力供应。 传统上&#xff0c;网络设备&#xff08;如IP电话、无线接入点、网络摄像机等&#xff09;通常需要…

stu01-IDEA怎么创建一个HTML项目

1.打开idea&#xff0c;依次点击file→new→project 2.点击Java&#xff0c;选择你的jdk&#xff0c;没有下载的点击“Download JDK”/已经下载有JDK但在这里没显示的→点击“Add JDK”&#xff0c;选择你安装的JDK的路径&#xff0c;然后next 3.next 4.起好名字&#xff0c;我…

每日一题~二叉树的最近公共祖先

题目连接&#xff1a;236. 二叉树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 思路分析&#xff1a; 由题可知&#xff0c;我们需要找到 p 和 q 两个二叉树的最近公共祖先节点&#xff0c;首先我们分析一下&#xff0c;这个最近公共祖先节点…

【适用于电力系统和音频系统】计算信号的总谐波失真 (THD)(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【力扣-每日一题】2560. 打家劫舍 IV

class Solution { public:bool check(vector<int> &nums,int max_num,int k){//只需要计算可以偷的房间。在满足最大值为max_num下时&#xff0c;能偷的最多的房间&#xff0c;与k值比较//如果大于K&#xff0c;说明max_num还可以缩小//如果小于看&#xff0c;说明ma…

Docker 应用部署

Docker 应用部署 一、部署MySQL 搜索MySQL镜像 拉取MySQL镜像 docker pull mysql:8.0创建容器&#xff0c;设置端口映射&#xff0c;目录映射 # 在root/home/mysql目录下创建MySQL目录用于存储MySQL数据信息 mkdir /root/home/mysql cd /root/home/mysql创建并运行 # 330…

Java中StringBuilder常见的操作方法

文章目录 1.创建字符串2.追加字符串3.替换字符串4.删除字符串5.插入字符串6.字符串反转7.其他操作 在 Java 中字符串不属于基本数据类型&#xff0c;而是对象。Java 提供了 String 类来创建和操作字符串&#xff0c;但String 类是不可变类&#xff0c;一旦一个 String 对象被创…

分类预测 | MATLAB实现WOA-CNN-LSTM-Attention数据分类预测

分类预测 | MATLAB实现WOA-CNN-LSTM-Attention数据分类预测 目录 分类预测 | MATLAB实现WOA-CNN-LSTM-Attention数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现WOA-CNN-LSTM-Attention数据分类预测&#xff0c;运行环境Matlab2021b及以…

电脑更换硬盘的时候怎么迁移系统?

为什么需要迁移系统&#xff1f; 在一些关于电脑DIY或Windows相关的论坛社区中&#xff0c;有很多人发帖询问怎么迁移系统。那么这个系统迁移&#xff0c;究竟是何含义呢&#xff1f;通俗易懂地解释一下&#xff0c;就是创建一个完整无缺的操作系统复制品&#xff0c;它与系…

Android StateFlow初探

Android StateFlow初探 前言&#xff1a; 最近在学习StateFlow&#xff0c;感觉很好用&#xff0c;也很神奇&#xff0c;于是记录了一下. 1.简介&#xff1a; StateFlow 是一个状态容器式可观察数据流&#xff0c;可以向其收集器发出当前状态更新和新状态更新。还可通过其 …

【Android知识笔记】FrameWork中的设计模式

一、FrameWork中有哪些设计巧妙之处 例如: Binder调用,模糊进程边界: 屏蔽跨进程IPC通信的细节,让开发者把精力放在业务上面,无需关心进程之间的通信。Bitmap大图传输,高性能: 只传递Binder句柄,到目标进程后做内存映射,不用做大量数据拷贝,速度非常快。Zygote创建进…

Python基础数据结构入门必读指南

更多资料获取 作者主页&#xff1a;涛哥聊Python 个人网站&#xff1a;涛哥聊Python 大家好&#xff0c;我是涛哥&#xff0c;今天为大家分享的是Python中常见的数据结构。 1.数组 含义&#xff1a;数组是一种有序的数据结构&#xff0c;其中的元素可以按照索引来访问。数组…

谷粒商城篇章6 ---- P193-P210 ---- 异步线程池商品详情【分布式高级篇三】

目录 1. 异步 1.1 初始化线程的 4 种方式 1.1.1 继承 Thread 1.1.2 实现 Runnable 接口 1.1.3 实现 Callable 接口 FutureTask 1.1.4 线程池 1.1.5 以上 4 种方式总结&#xff1a; 1.2 线程池详解 1.2.1 初始化线程池的 2 种方式 1.2.1.1 使用 Executors 创建 1.2…

嵌入式养成计划-29-网络编程----TCP与UDP的基础模型

Linux下&#xff0c;基于TCP与UDP协议&#xff0c;不同进程下单线程通信服务器 Linux下&#xff0c;基于TCP与UDP协议&#xff0c;不同进程下单线程通信服务器 六十五、TCP与UDP的基础模型 1. socket 1.1 套接字概念 最早的套接字和共享内存&#xff0c;消息队列&#xff…

一篇文章带你学会Hadoop-3.3.4集群部署

目录 ​编辑 一、Hadoop集群部署 二、基础设施配置 2.1 设置网络 2.1.1 设置主机名称 2.1.2 设置hosts配置文件 2.1.3 关闭防火墙 2.1.4 关闭selinux 2.1.5 更换语言环境 2.1.6 更换时区 2.1.7 ssh免密 2.1.7.1 生成.ssh文件夹 2.1.7.2 进入文件夹 2.1.7.3 生成密码和…

MySQL数据库查缺补漏——基础篇

MySQL数据库查缺补漏-基础篇 基础篇 net start mysql80[服务名] net stop mysql80 create database pshdhx default charset utf8mb4; 为什么不使用utf8&#xff1f;因为其字符占用三个字节&#xff0c;有四个字节的字符&#xff0c;所有需要设置为utf8mb4; 数值类型&…