【计算机基础】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.hqwc.cn/news/112539.html

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

相关文章

eNSP网络学习

一、eNSP 1.什么是eNSP eNSP(Enterprise Network Simulation Platform)是一款由华为提供的免费的、可扩展的、图形化操作的网络仿真工具平台&#xff0c;主要对企业网络路由器、交换机进行软件仿真&#xff0c;完美呈现真实设备实景&#xff0c;支持大型网络模拟&#xff0c;让…

statistic learning outlook

supervised learning 贝叶斯估计 决策树与信息熵 信息熵 H ( D ) − ∑ i 1 n p ( X x i ) l o g ( P ( X x i ) ) − ∑ p i l o g ( p i ) H(D)-\sum_{i1}^n p(Xx_i)log(P(Xx_i))-\sum p_ilog(p_i) H(D)−∑i1n​p(Xxi​)log(P(Xxi​))−∑pi​log(pi​)&#xff0c;信…

多线程中的Semaphore信号量

在Java多线程编程中&#xff0c;Semaphore是一种用于控制资源访问的机制。Semaphore允许您限制同时访问某个资源的线程数量。这在需要限制并发访问的情况下非常有用&#xff0c;例如数据库连接池或有限数量的线程池。 创建Semaphore 要使用Semaphore&#xff0c;首先需要创建…

Go 语言学习总结(9)—— Go 与 Java 全面对比总结

基本语法格式 Golang: 编码风格相对统一&#xff0c;简单&#xff0c;没有太多的语法糖等&#xff0c;Java层次清晰&#xff0c;全面面向对象。 变量相关 变量的声明及使用 在Java或者PHP、Python中&#xff0c;声明了变量&#xff0c;可以不使用&#xff0c;也不报错。 p…

火山引擎 ByteHouse:ClickHouse 如何保证海量数据一致性

背景 ClickHouse是一个开源的OLAP引擎&#xff0c;不仅被全球开发者广泛使用&#xff0c;在字节各个应用场景中也可以看到它的身影。基于高性能、分布式特点&#xff0c;ClickHouse可以满足大规模数据的分析和查询需求&#xff0c;因此字节研发团队以开源ClickHouse为基础&…

django创建web服务器

安装 pip install django 创建项目 django-admin startproject report django-admin startapp data //project下可创建多个app 执行使用 python manage.py migrate //orm代码到数据库 python manage.py runserver 0.0.0.0:80 权限管理 python manage.py createsuperuser 创建…

创龙TL6678F开发板: 实现FPGA与DSP之间 SRIO(3.125Gbps, 4x)通信

创龙TL6678F开发板官方Demo:SRIO_AD9613 实现了FPGA和DSP之间的SRIO通信, SRIO的速率为5Gbps. 在FPGA端, srio_gen_2 模块的参考时钟为 125MHz. 而Demo: udp_10g_echo 实现了10G以太网通信, ten_gig_eth_pcs_pma模块的参考时钟为156.25 MHz. 两者共用一个 cdcm61002, 且两个参考…

ssh登录时间久或登陆后报错

情况1 问题描述&#xff1a; ssh登录时间很久&#xff0c;登录后出现abrt-cli status timed out 的报错 问题原因&#xff1a; .lock文件被锁导致 执行systemctl status abrtd.service可以看到被锁的.lock 处理方式&#xff1a; ps -ef | grep pid 找到被锁的进程kill掉…

视觉SLAM(1):orbslam3复现

文章目录 环境依赖安装OpencvPangolinEigen3DBoW2 and g2oPythonboostlibssl-dev ORB_SLAM3的编译和安装数据集测试参考 环境 ubuntu18.04-x86nvidia-3080工作站 依赖安装 Opencv 参考这篇博客。 Pangolin 安装v0.6版本的&#xff0c;最新版会报错 error: ‘slots_refere…

SAP CRM 模块:概述,体系结构

前言 CRM 代表“客户关系管理”&#xff0c;是一组有助于以有组织的方式管理客户关系的方法和工具。 在当今竞争激烈的商业环境中&#xff0c;顶级公司的注意力越来越集中于其最有价值的资产– 客户。 因此&#xff0c;这些公司需要一种合适的软件解决方案来迎合其客户&#…

〔022〕Stable Diffusion 之 生成视频 篇

✨ 目录 🎈 视频转换 / mov2mov🎈 视频转换前奏准备🎈 视频转换 mov2mov 使用🎈 视频转换 mov2mov 效果预览🎈 视频无限缩放 / Infinite Zoom🎈 视频无限缩放 Infinite Zoom 使用🎈 视频转换 / mov2mov 如果想将视频换成另一种风格,或者想将视频中的人物替换掉,…

FastAdmin 列表多选后批量操作数据

需求如下图 html增加代码 <a href"javascript:;" class"btn btn-info btn-charge {:$auth->check(code/change)?:hide}" title"{:__(批量转移)}" >{:__(批量转移)}</a> 对应的js文件增加以下代码&#xff1a; // 初始化表格参…