如何配置 VS Code 实现 git 密码免输入

目录

  • 问题描述
  • 尝试过的失败方法
  • 问题分析
  • 最终采用的解决方案:利用 ssh key 提供密码免输入功能
    • 安装 git windows 命令工具
    • 在windows本地生成 ssh key
    • 将公钥安装到 git 服务器
      • 第一种方法
      • 第二种方法
      • 调试方法
  • 参考资料:

问题描述

在 Windows 上,使用 Visual Studio Code 开发 typescript 项目,提交 git 代码总是会要求输入密码。
希望能像 IDEA 那样让 git 记住密码,不要每次都重新输入。

尝试过的失败方法

  1. 网上有人说可以用 git config --global credential.helper store,但测试了不行,因为我的 git 服务是 ssh 协议。
  2. 企图使用 ssh-agent 来解决问题,但其实可以不用 ssh-agent 参与也能解决问题。因为 ssh-agent 只是帮助提供 ssh key 的 passphrase
    什么是 ssh-agentssh key 以及 passphrase,请看这里。简单解释就是 ssh key 指的是‘非对称加密算法’中的一对字符串,一般比较长所以存放在文件中,分为私钥(private key)和公钥(public key),用公钥加密、私钥解密。要使用这个私钥(private key)时,为了安全起见,会再加一个简短的密码,要求用户手工输入,这个简短的密码就叫做passphrase (口令)
  3. 查找 VSCode 的 git 插件,企图让 VSCode 像 IDEA 那样记住 git 密码,但没有找到可用的插件。

问题分析

有一个很重要的考虑因素是你的 git 服务所提供的访问协议。常见的 git 服务协议大体有以下几类:

  1. ssh 协议
  2. git 协议
  3. https 协议
  4. git 管理系统,如 github、gitlab 等。

因为 ssh 协议简单,所以我目前采用的是这种协议,如果你的协议不是 ssh,那么下面的解决方案就只能提供参考了,不一定对症。

最终采用的解决方案:利用 ssh key 提供密码免输入功能

如果 git 的协议是 ssh,那么需要用 ssh key 方式访问 git 服务器,这样就可以避免每次提交/拉取时输入密码了,具体方法如下。

安装 git windows 命令工具

从这里下载并安装好 git windows 命令工具。git 命令行工具是一组命令程序的集合,而不只是一个简单的 exe 文件。包括 git.exe、ssh-add.exe 等 git 和 ssh 相关工具。

在windows本地生成 ssh key

生成的命令是:

ssh-keygen -o

-o 参数表示使用新的秘钥格式,而不是旧格式,更安全些。它会生成 rsa 私钥/公钥 对。
秘钥路径不要修改,就放在默认路径下,即c:\Users\[用户名]\.ssh\ 中。
成功后,会看到下面2个文件:
在这里插入图片描述

将公钥安装到 git 服务器

这一步是将你的公钥注册到 git 服务器,以便 git 服务器允许你连接、访问,通常问题就出现在这一步。
有两种方法实现公钥注册工作。

不管哪种方法,核心都是将公钥文件的内容复制、写入到服务器上 git 用户的一个文件中。
假设 Linux 服务器上,git程序的用户名是 gits,那么这个文件的路径就是 /home/gits/.ssh/authorized_keys
内容是一个公钥占一行,像下面这样:

公钥1
公钥2

只要将公钥内容放入这个指定文件,并设置好目录 .ssh/ 和文件 authorized_keys 的权限,最好设置为 600700不需要重启 sshd 等任何额外操作,就能生效了。如果有问题,也是其他问题,和 sshd 服务基本没有关系。

下面介绍两种注册公钥到git服务器的方法。

第一种方法

使用ssh-copy-id命令。

ssh-copy-id gits@gits.yourdomain.com

这里的 gits 是用户名,服务器域名是 gits.yourdomain.com。替换成你实际的用户名和域名即可,注意是能用ssh登录服务器的git系统用户名,不是所谓 git 管理系统的用户名。
然后输入gits用户的密码,程序会自动将当前windows本地用户的公钥写入到服务器的 authorized_keys 文件中。但这种方法只会写入 rsa 公钥,如果你还有其他公钥,它是不会写入的,需要你自己手工写入,这点需要注意。我也是在这里折腾了很长时间。

在这里插入图片描述

第二种方法

手工复制公钥文件的内容,然后登录 git 服务器,修改 /home/gits/.ssh/authorized_keys 文件,粘贴进公钥内容即可。

注意有多个公钥文件(.pub)文件时,要全部写入,如果有遗漏那么可能登录失败,因为 ssh 可能用的就是你遗漏的那个公钥。我就是在这里折腾了很久,最后发现 git 使用的是 id_ed25519.pub 而不是新版的 rsa.pub 公钥。

调试方法

按照上面的步骤配置后,如果用 git pull 等命令时还是要求输入密码,那么可以用 xshell 等工具进行除错,查找问题原因。

方法是先确保用 ssh 可以无密码登录、连接 git 服务器。如果能达成这一步,那么就没问题了。

并且要注意,有多个公钥,那么多个公钥都需要测试成功,因为 git 指不定使用哪个公钥。

添加ssh key访问 git 服务器的 xshell 配置如下。
在这里插入图片描述

参考资料:

  • ssh-agent 文档 清晰明了地解释了ssh-agent的作用,可以一读。
  • ssh agent详解,知乎文章,没点出 ssh-agent 的作用主要是管理 passphrase,不是必须的。
  • vscode 中用 ssh 协议访问 git,使用 ssh key 方式访问 git 服务的方法,但讲得不够清楚。
  • 用ssh访问git,git 官方文档,讲得过于简单。
  • ssh-copy-id 文档

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

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

相关文章

Redis不同环境缓存同一条数据,数据内部值不同

背景 现实中,本地环境(dev)和开发环境(feature)会共同使用相同的中间件(本篇拿Redis举例),对于不同环境中的,图片、视频、语音等资源类型的预览地址url,需要配…

Cesium笔记 初始化 使用Vue-Cesium 组件

参考 A Vue 3 based component library of CesiumJS for developers | Vue for CesiumVue for Cesium, a Vue 3.x based component library of CesiumJS for GISerhttps://zouyaoji.top/vue-cesium/#/zh-CN/component/quickstart

Spring boot 3 集成rocketmq-spring-boot-starter解决版本不一致问题

安装RocketMQ根据上篇文章使用Docker安装RocketMQ并启动之后&#xff0c;有个隐患详情见下文 Spring Boot集成 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2…

基于 SpringBoot + vue 的医院管理系统(含源码,数据库,文档)

基于 SpringBoot vue 的医院管理系统 †前后端分离思想&#xff0c;这个系统简直太棒了&#xff01;屯 光这个系统采用了 前后端分离思想&#xff0c;后端使用 SpringBoot和 SpringMVC框架&#xff0c;让代码更高效&#xff0c;更易于维护。前端则使用了 vue js 和ElementU…

竞赛保研 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

SUDA-计算机网路-期末复习提纲

写在前面 帮苏大的同学整理的计网复习材料&#xff0c;用的是他们老师划定的范围。 1.负责互联网协议开发、标准制定、地址分配的国际组织名称及其主要职责 (1) 地址支持组织&#xff08;ASO&#xff09;负责IP地址系统的管理。 (2) 域名支持组织&#xff08;DNSO&#xff09;…

实用Unity3D Log打印工具XDebug

特点 显示时间&#xff0c;精确到毫秒显示当前帧数&#xff08;在主线程中的打印才有意义&#xff0c;非主线程显示为-1&#xff09;有三种条件编译符(如下图) 注&#xff1a;要能显示线程中的当前帧数&#xff0c;要在app启动时&#xff0c;初始化mainThreadID字段条件编译符…

开源加解密库之GmSSL

一、简介 GmSSL是由北京大学自主开发的国产商用密码开源库&#xff0c;实现了对国密算法、标准和安全通信协议的全面功能覆盖&#xff0c;支持包括移动端在内的主流操作系统和处理器&#xff0c;支持密码钥匙、密码卡等典型国产密码硬件&#xff0c;提供功能丰富的命令行工具及…

在k8s集群中部署多nginx-ingress

关于ingress的介绍&#xff0c;前面已经详细讲过了&#xff0c;参考ingress-nginx详解和部署方案。本案例ingress的部署使用deploymentLB的方式。 参考链接&#xff1a; 多个ingress部署 文章目录 1. 下载ingress的文件2. 文件资源分析3. 部署ingress3.1 部署第一套ingress3.1…

日志系统一(elasticsearch+filebeat+logstash+kibana)

目录 一、es集群部署 安装java环境 部署es集群 安装IK分词器插件 二、filebeat安装&#xff08;docker方式&#xff09; 三、logstash部署 四、kibana部署 背景&#xff1a;因业务需求需要将nginx、java、ingress日志进行收集。 架构&#xff1a;filebeatlogstasheskib…

【数据库原理】期末突击(1)

有不会的题可以后台问我的哦&#xff0c;看见了就会回。 本文章主要是选择题、填空题&#xff0c;下章将更新综合题&#xff0c;祝大家期末心想事成。 一、选择题 下列关系运算中&#xff0c;&#xff08; C &#xff09;运算不属于专门的关系运算。 A&#xff0e;选择 …

Tensorflow2.0笔记 - 创建tensor

tensor创建可以基于numpy&#xff0c;list或者tensorflow本身的API。 笔记直接上代码&#xff1a; import tensorflow as tf import numpy as np import matplotlib.pyplot as plttf.__version__#通过numpy创建tensor tensor0 tf.convert_to_tensor(np.ones([2,3])) print(te…

Mysql 分割字符串,一行变多行,@rownum,mysql.help_topic

1 前言 朋友最近遇到一个比较棘手的 sql 问题&#xff0c;让我帮忙看看&#xff1a; 他有两张表 testa 和 testb &#xff0c;一个表存的日期&#xff0c;另一个表存字符串例如 2023-11-01,2023-11-02&#xff0c;如何将这两张表关联起来&#xff0c;只查 testa 表的数据&#…

<Python>PyQt5中UI界面和逻辑函数分开写的一种方式

前言 如果经常使用PyQt5这种模块来编写带UI界面的程序&#xff0c;那么很自然的就会涉及到&#xff0c;一旦程序比较大&#xff0c;UI控件多的时候&#xff0c;需要将UI和逻辑程序分离&#xff0c;这样方便管理&#xff0c;也方便维护。 配置&#xff1a; 平台&#xff1a;win…

三、yolov8训练结果查看和模型预测

训练结果查看 1、在模型训练结束后&#xff0c;如下图所示&#xff0c;找到该文件夹。 2、然后找到weights文件夹中的best.pt文件&#xff0c;这就是该数据训练后的模型。 模型预测 1、在assets文件夹下创建FPC-2文件夹&#xff0c;放入一些同类FPC预测结果。 2、和训练…

什么是活动的DWDM网络?

DWDM系统被认为是一个基于应答器的系统&#xff0c;可以帮助在数据中心互连设置中在站点之间传输大量数据。不同于无源DWDM网络&#xff0c; DWDM网络通常包括OEO、主动DWDM Mux Demux、EDFA、DCM和其他主动WDM组件&#xff0c;更适合远程传输。此外&#xff0c;主动DWDM网络还…

x-cmd pkg | pdfcpu - 强大的 PDF 处理工具

目录 简介首次用户多功能支持性能表现安全的加密处理进一步阅读 简介 pdfcpu 是一个用 Go 编写的 PDF 处理库。同时它也提供 API 和 CLI。pdfcpu 提供了丰富的 PDF 操作功能&#xff0c;用户还能自己编写配置文件&#xff0c;用来管理和使用各种自定义字体并存储有效的默认配置…

【前端】前后端的网络通信基础操作(原生ajax, axios, fetch)

概述 前后端网络请求工具 原生ajaxfetch apiaxios GET和POST请求 get只能发纯文本 post可以发不同类型的数据&#xff0c;要设置请求头&#xff0c;需要告诉服务器一些额外信息 测试服务器地址 有一些公共的测试 API 可供学习和测试用途。这些 API 允许你发送 HTTP 请求…

5.MapReduce之Combiner-预聚合

目录 概述本地预计算 Combiner 意义实践前提代码日志观察 结束 概述 在 MR、Spark、Flink 中&#xff0c;常用的减少网络传输的手段。 通常在 Reducer 端合并&#xff0c;shuffle 的数据量比在 Mapper 端要大&#xff0c;根据业务情况及数据量极大时&#xff0c;将大幅度降低效…

Pod控制器详解

一、什么是pod控制器 Pod控制器是管理pod的中间层&#xff0c;使用Pod控制器之后&#xff0c;只需要告诉Pod控制器&#xff0c;想要多少个什么样的Pod就可以了&#xff0c;它会创建出满足条件的Pod并确保每一个Pod资源处于用户期望的目标状态。如果Pod资源在运行中出现故障&am…