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

news2025/1/12 15:44:00

目录

  • 问题描述
  • 尝试过的失败方法
  • 问题分析
  • 最终采用的解决方案:利用 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.coloradmin.cn/o/1361619.html

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

相关文章

西电期末1025.平滑滤波

一.题目 二.分析与思路 别光看公式,读题干:“位置i的输出为距离i最近的三个输入的平均值”,再看示例,输入几个,输出几个,所以就是输出每个位置距离最近的三个输入的平均值,中间没什么问题&…

高可用分布式部署Spark、完整详细部署教程

前言 Spark 是 UC Berkeley AMP Lab 开源的通用分布式并行计算框架。 Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS&#xff…

DoIP学习笔记系列:(八)车厂一般关于DoIP的相关测试分析

文章目录 1. 前言2. 基本项测试2.1 协议版本默认值2.2 车辆标识请求报文格式2.3 带EID的车辆标识请求报文格式2.4 带VIN的车辆标识请求报文格式2.5 否定响应码0x002.6 否定响应码0x012.7 否定响应码0x022.8 否定响应码0x042.9 路由激活应答码0x002.10 路由激活应答码0x012.11 路…

RMAN-03002 RMAN-06059 ORA-19625

有个现场经理反馈,每天的rman备份异常,登录系统查看rman的log日志,报错信息如下 RMAN> run{ 2> backup filesperset 50 archivelog all format /backup/ARCHBAK_%d_%T_%s tag arch_bak delete all input; 3> } 4> Starting …

粒子群优化pso结合bp神经网络优化对csv文件预测matlab(3)

1.csv数据为密西西比数据集,获取数据集可以管我要,数据集内容形式如下图: 2.代码 这里参考的是b站的一位博主。 数据集导入教程在我的另一篇文章bp写过,需要的话可以去看一下 psobp.m close all clc%读取数据 inputX; outputY;…

数字化工厂产品推荐 带OPC UA的分布式IO模块

背景 近年来,为了提升在全球范围内的竞争力,制造企业希望自己工厂的机器之间协同性更强,自动化设备采集到的数据能够发挥更大的价值,越来越多的传统型工业制造企业开始加入数字化工厂建设的行列,实现智能制造。 数字化…

Hierarchical Clusting模型

介绍: Hierarchical Clustering 是一种常用的聚类方法,它通过构建一个层次化的聚类树(或者称为聚类图),将数据点逐步合并组成不同的聚类簇。 Hierarchical Clustering 的主要思想是将相似的数据点归为一类&#xff0c…

数字IC后端实现之Innovus TA-152错误解析(分频generated clock定义错误)

**ERROR: (TA-152): A latency path from the ‘Fall’ edge of the master clock at source pin… Error Code TA-152 在数字IC后端实现innovus中我们经常会看到这类Error,具体信息如下所示。 Error Message **ERROR: (TA-152): A latency path from the ‘Fa…

模板模式实现分布式锁实战

前言 分布式锁相信大家都有用过,常见的分布式锁实现方式例如redis、zookeeper、数据库都可以实现,而我们代码中强引用这些分布式锁的代码,那么当我们以后想替换分布式锁的实现方式时,需要修改代码的成本会很高,于是我…

21.串的处理

题目 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String str sc.nextLine();char[] c str.toCharArray();int n c.length;StringBuilder st new StringBuilder();int i 0;while(i<n)…

G4周:CGAN,手势生成

本文为&#x1f517;365天深度学习训练营 中的学习记录博客 原作者&#xff1a;K同学啊|接辅导、项目定制 我的环境&#xff1a; 1.语言&#xff1a;python3.7 2.编译器&#xff1a;pycharm 3.深度学习框架Pytorch 1.8.0cu111 一、CGAN介绍 条件生成对抗网络&#xff08;…

【Golang】Json 无法表示 float64 类型的 NaN 以及 Inf 导致的 panic

【Golang】Json 无法表示 float64 类型的 NaN 以及 Inf 导致的 panic 原因 golang 服务出现了 panic&#xff0c;根据 panic 打印出的堆栈找到了问题代码&#xff0c;看上去原因是&#xff1a;json 序列化时&#xff0c;遇到了无法序列化的内容 [panic]: json: unsupported …

微信小程序——调节手机屏幕亮度案例分享

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

Elasticsearch基本操作之索引操作

本文说下Elasticsearch基本操作之索引操作 文章目录 概述创建索引创建索引示例重复创建索引示例 查看索引查看所有索引查看单个索引 删除索引删除索引 概述 由于是使用命令来操作Elasticsearch&#xff0c;可以使用kibana&#xff0c;postman和apifox等工具 我使用了apifox来执…

python-查漏补缺笔记-更新中

包导入时__init__.py中命令的执行顺序和sys.modules变化 ref: https://edu.csdn.net/skill/practice/python-3-6/164 在有父包和子包的情况下&#xff0c;父包中的“ __ init__.py”语句会在子包的“ __ init__.py”语句之前执行&#xff0c;然后按下列顺序执行导入子包和模块…

7款实用的SQLite数据库可视化管理工具

前言 俗话说得好“工欲善其事&#xff0c;必先利其器”&#xff0c;合理的选择和使用可视化的管理工具可以降低技术入门和使用门槛。今天推荐7款实用的SQLite数据库可视化管理工具(GUI)&#xff0c;帮助大家更好的管理SQLite数据库。 什么是SQLite&#xff1f; SQLite是一个…

[C#]使用onnxruntime部署yolov8-onnx印章检测

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 YOLOv8是目标检测领域中的一种先进算法&#xff0c;它是YOLO&#xff08;You Only Look Once&#xff09;系列算法的最新发展。YOLO算法以其高效和实时的性能而著名&#xff0c;而YOLOv8则进一…

Flume基础知识(九):Flume 企业开发案例之复制和多路复用

1&#xff09;案例需求 使用 Flume-1 监控文件变动&#xff0c;Flume-1 将变动内容传递给 Flume-2&#xff0c;Flume-2 负责存储 到 HDFS。同时 Flume-1 将变动内容传递给 Flume-3&#xff0c;Flume-3 负责输出到 Local FileSystem。 2&#xff09;需求分析&#xff1a; 3&…

【十】【C语言\动态规划】376. 摆动序列、673. 最长递增子序列的个数、646. 最长数对链,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略&#xff0c;它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题&#xff0c;并将每个小问题的解保存起来。这样&#xff0c;当我们需要解决原始问题的时候&#xff0c;我们就可以直接利…

用Redis实现全局唯一ID

全局唯一ID 如果使用数据库自增ID就存在一些问题&#xff1a; id的规律性太明显受表数据量的限制 全局ID生成器&#xff0c;是一种在分布式系统下用来生成全局唯一ID的工具&#xff0c;一般要满足下列特性&#xff1a; 唯一性高可用递增性安全性高性能 为了增加ID的安全性…