设置 Git 默认推送不需要输入账号和密码【Ubuntu、SSH】

如何设置 Git 默认推送不需要输入账号和密码

在使用 Git 管理代码时,许多开发者会遇到每次推送(push)或拉取(fetch)代码时都需要输入 GitHub 或 GitLab 等远程仓库的账号和密码的情况。虽然设置了用户名和电子邮件信息以确保提交时的身份正确,但这并不能解决每次操作时仍然需要输入密码的问题。
例如,我们可以使用以下命令来设置用户名和电子邮件:

git config --global user.name 'xx'
git config --global user.email 'xxx@qq.com'

这些配置确保了 Git 提交时的身份信息正确,但它们并不能避免每次与远程仓库交互时重复输入密码的麻烦。在这里插入图片描述

因此,为了提升工作效率并简化操作,许多开发者选择配置 SSH 密钥,从而免去每次推送代码时输入账号和密码的烦恼。

本文将详细介绍如何配置 SSH 密钥,使 Git 推送代码时不再需要输入账号和密码。

初学者常见的 HTTPS URL 克隆方式

对于初学者而言,HTTPS URL 克隆无疑更为直观和便捷。HTTPS 协议可以直接通过浏览器访问,而且操作简单。只需要复制远程仓库的 HTTPS URL,然后在本地执行以下命令:

git clone https://github.com/username/repository.git

这种方式的好处是操作简单,可以直接使用用户名和密码来进行认证。然而,HTTPS 协议也有一个不便之处——每次进行 git pullgit push 操作时,都需要手动输入账号和密码。尤其是在频繁推送代码的情况下,重复输入账号密码显得非常繁琐和低效。

SSH URL 克隆方式的优势

相比 HTTPS,SSH URL 克隆在初次设置时稍显复杂,需要配置和添加 SSH key。但一旦配置成功,使用 SSH 的方式将使得后续的操作变得非常流畅。因为 SSH 是一种加密的网络传输协议,它不仅确保了数据传输的安全性,还免去了每次输入账号和密码的麻烦。

使用 SSH 协议的最大好处是,开发者在进行代码拉取或推送时,无需再输入账号和密码。这是通过在本地生成一个 SSH 密钥对(包括公钥和私钥),并将公钥上传到远程 Git 仓库(如 GitHub)来实现认证的。

如何配置 SSH 密钥

为了让 Git 推送和拉取代码时不再需要输入账号和密码,我们可以通过配置 SSH 密钥来实现。下面是详细的步骤。

1. 生成 SSH 密钥对

首先,打开终端并使用以下命令生成 SSH 密钥对。如果你之前没有生成过密钥,或者想重新生成新的密钥,可以执行以下命令:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsa:指定使用 RSA 算法。
  • -b 4096:指定密钥长度为 4096 位。
  • -C "your_email@example.com":为密钥添加一个标识(通常是你的邮箱地址)。

执行该命令后,它会提示你选择保存位置。你可以在提示时指定路径为当前目录,例如:

~/.ssh/id_rsa

在这里插入图片描述
或者在命令中直接指定路径:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ./id_rsa

在这里插入图片描述

这样,生成的密钥将直接保存在当前文件夹中。-f ./id_rsa 参数指定了密钥保存的文件名和路径。之后,你可以将该密钥上传到项目中使用,方便管理多个仓库的密钥。

然后,它会要求你输入一个密码来保护私钥(也可以留空)。

2. 添加 SSH 公钥到 SSH 代理

生成密钥对后,下一步是将私钥添加到 SSH 代理。首先,启动 SSH 代理并将私钥加载到代理中:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

如果你将密钥保存在当前文件夹或指定了不同的路径(例如 ./id_rsa),可以通过以下命令加载私钥:

ssh-add ./id_rsa

3. 将 SSH 公钥添加到远程 Git 仓库(如 Gitee)

接下来,你需要将生成的 SSH 公钥添加到远程仓库。首先,使用以下命令查看并复制公钥内容:

cat ~/.ssh/id_rsa.pub

如果你使用的是自定义文件名,请将路径更改为相应的公钥路径,如:

cat ./id_rsa.pub

在这里插入图片描述

复制输出的公钥内容。

然后,访问 Gitee SSH 密钥设置页面,点击 “添加 SSH 公钥” 按钮,将复制的公钥粘贴到页面中的 “公钥” 字段。点击 “确定” 完成配置。
在这里插入图片描述

完成此设置后,再次进行一次身份认证,就可以完成配置。

在这里插入图片描述

4. 配置 Git 使用 SSH

完成 SSH 密钥配置后,下一步是确保 Git 使用 SSH 连接远程仓库。你可以通过以下命令将远程仓库 URL 设置为 SSH URL:

git remote set-url origin git@github.com:username/repository.git

例如,如果你使用的是 Gitee:

git remote set-url origin git@gitee.com:username/repository.git

完成此设置后,Git 将自动使用 SSH 协议进行通信,以后每次推送代码时,你就无需再输入账号和密码了。


如何将已有的 HTTPS 克隆仓库更改为 SSH 克隆

如果你已经通过 HTTPS 克隆了仓库,并希望改为使用 SSH 进行推送和拉取操作,可以按照以下步骤进行更改:

1. 删除现有的 HTTPS 连接

在终端中输入以下命令,删除现有的 HTTPS 远程仓库链接:

git remote rm origin

2. 添加 SSH 链接

接着,使用 SSH URL 重新设置远程仓库地址:

git remote add origin git@gitee.com:username/repository.git

完成此设置后,今后推送代码时就不再需要输入 GitHub 的账号和密码了。


小贴士:使用多个 SSH 密钥

如果你有多个 Git 仓库,并且希望为每个仓库使用不同的 SSH 密钥(例如,一个用于 GitHub,一个用于 GitLab),你可以为每个仓库生成不同的 SSH 密钥并通过配置文件指定使用哪个密钥。

~/.ssh/config 文件中,可以为不同的域名指定不同的 SSH 密钥文件。例如:

# GitHub
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_github

# GitLab
Host gitlab.com
  HostName gitlab.com
  User git
  IdentityFile ~/.ssh/id_rsa_gitlab

这样,在不同的仓库中,Git 会自动选择相应的密钥进行身份验证,而无需手动输入密码。


通过配置 SSH 密钥,你不仅可以省去每次输入用户名和密码的麻烦,还能提高代码管理的安全性和便捷性。希望本教程能够帮助你提升 Git 使用体验,享受无密码推送的便捷!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TCP Window Full是怎么来的

wireshark查看包时,会看到TCP Window Full,总结下它的特点: 1. Sender会显示 TCP Window Full 2. “Sender已发出,但,Receiver尚未ack的字节”,即Sender的 bytes in flights 3. Sender的 bytes in fligh…

PyTorch框架——基于WebUI:Gradio深度学习ShuffleNetv2神经网络蔬菜图像识别分类系统

第一步:准备数据 蔬菜数据集,英文为Vegetable。 train 目录下有15000 张图片。 共十五种植物的幼苗图片集,分别为classes [Bean, Bitter_Gourd, Bottle_Gourd, Brinjal, Broccoli, Cabbage, Capsicum, Carrot, Cauliflower, Cucumber, Pa…

WPS数据分析000001

目录 一、表格的新建、保存、协作和分享 新建 保存 协作 二、认识WPS表格界面 三、认识WPS表格选项卡 开始选项卡 插入选项卡 页面布局选项卡 公式选项卡 数据选项卡 审阅选项卡 视图选项卡 会员专享选项卡 一、表格的新建、保存、协作和分享 新建 ctrlN------…

网络安全 | 什么是正向代理和反向代理?

关注:CodingTechWork 引言 在现代网络架构中,代理服务器扮演着重要的角色。它们在客户端和服务器之间充当中介,帮助管理、保护和优化数据流。根据代理的工作方向和用途,代理服务器可分为正向代理和反向代理。本文将深入探讨这两种…

某讯一面,感觉问Redis的难度不是很大

前不久,有位朋友去某讯面试,他说被问到了很多关于 Redis 的问题,比如为什么用 Redis 作为 MySQL 的缓存?Redis 中大量 key 集中过期怎么办?如何保证缓存和数据库数据的一致性?我将它们整理出来,…

基于机器学习的用户健康风险分类及预测分析

完整源码项目包获取→点击文章末尾名片! 背景描述 在这个日益注重健康与体能的时代,健身已成为许多人追求健康生活的重要组成部分。 本数据集包含若干健身房会员的详细信息,包括年龄、性别、体重、身高、心率、锻炼类型、身体脂肪比例等多项关…

TCP TIME-WAIT 状态为什么要坚持 2MSL

经常有人问这个问题,这种问题问我就对了。我准备了下面的一幅时序图来解释这个问题: 简单点说就是两个目的: 正常处理被动关闭方的重传 FIN;确保当前连接的所有报文全部消失。 也就是说,无论任何情况下,…

Ubuntu升级Linux内核教程

本文作者CVE-柠檬i: CVE-柠檬i-CSDN博客 本文使用的方法是dpkg安装,目前版本为5.4.0-204,要升级成5.8.5版本 下载 下载网站:https://kernel.ubuntu.com/mainline/ 在该网站下载deb包,选择自己想要升级的版本,这里是5…

Java算法 数据结构 栈 单调栈实战 模版题 [洛谷-P5788]

目录 题目地址 题目描述 输入输出样例 代码 题目地址 【模板】单调栈 - 洛谷 题目描述 输入输出样例 代码 static void solve() throws Exception {int nsc.nextInt();int[] arrnew int[n1];int[] result new int[n1];for(int i1;i<n1;i) {arr[i]sc.nextInt();}Stack …

web前端1--基础

&#xff08;时隔数月我又来写笔记啦~&#xff09; 1、下载vscode 1、官网下载&#xff1a;Visual Studio Code - Code Editing. Redefined 2、步骤&#xff1a; 1、点击同意 一直下一步 勾一个创建桌面快捷方式 在一直下一步 2、在桌面新建文件夹 拖到vscode图标上 打开v…

Api网关Zuul

网关分类与开放API 开放API (OpenAPI) 企业需要将自身数据、能力等作为开发平台向外开放&#xff0c;通常会以REST的方式向外提供&#xff0c;最好的例子就是淘宝开放平台、腾讯公司的QQ开发平台、微信开放平台。开放API平台必然涉及到客户应用的接入、API权限的管理、调用次数…

Flink(八):DataStream API (五) Join

1. Window Join Window join 作用在两个流中有相同 key 且处于相同窗口的元素上。这些窗口可以通过 window assigner 定义&#xff0c;并且两个流中的元素都会被用于计算窗口的结果。两个流中的元素在组合之后&#xff0c;会被传递给用户定义的 JoinFunction 或 FlatJoinFunct…

数据结构漫游记:队列的动态模拟实现(C语言)

嘿&#xff0c;各位技术潮人&#xff01;好久不见甚是想念。生活就像一场奇妙冒险&#xff0c;而编程就是那把超酷的万能钥匙。此刻&#xff0c;阳光洒在键盘上&#xff0c;灵感在指尖跳跃&#xff0c;让我们抛开一切束缚&#xff0c;给平淡日子加点料&#xff0c;注入满满的pa…

计算机毕业设计Python+卷积神经网络租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

基于 Spring Cloud 、Spring Boot、 OAuth2 的 RBAC 企业快速开发平台

系统说明 基于 Spring Cloud 、Spring Boot、 OAuth2 的 RBAC 企业快速开发平台&#xff0c; 同时支持微服务架构和单体架构提供对 Spring Authorization Server 生产级实践&#xff0c;支持多种安全授权模式提供对常见容器化方案支持 Kubernetes、Rancher2 、Kubesphere、EDA…

TOSUN同星TsMaster使用入门——3、使用系统变量及c小程序结合panel面板发送报文

本篇内容将介绍TsMaster中常用的Panel面板控件以及使用Panel控件通过系统变量以及c小程序来修改信号的值&#xff0c;控制报文的发送等。 目录 一、常用的Panel控件介绍 1.1系统——启动停止按钮 1.2 显示控件——文本框 1.3 显示控件——分组框 1.4 读写控件——按钮 1.…

【威联通】FTP服务提示:服务器回应不可路由的地址。被动模式失败。

FTP服务器提示&#xff1a;服务器回应不可路由的地址。被动模式失败。 问题原因网络结构安全管理配置服务器配置网关![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1500d9c0801247ec8c89db7a44907e4f.png) 问题 FTP服务器提示&#xff1a;服务器回应不可路由的地址…

动手学大数据-3社区开源实践

目录 数据库概览&#xff1a; MaxComput&#xff1a; HAWQ&#xff1a; Hologres&#xff1a; TiDB&#xff1a; Spark&#xff1a; ClickHouse&#xff1a; Apache Calcite 概览 Calcite RBO HepPlanner 优化规则&#xff08;Rule&#xff09; 内置有100优化规则 …

【云岚到家】-day02-客户管理-认证授权

第二章 客户管理 1.认证模块 1.1 需求分析 1.基础概念 一般情况有用户交互的项目都有认证授权功能&#xff0c;首先我们要搞清楚两个概念&#xff1a;认证和授权 认证: 就是校验用户的身份是否合法&#xff0c;常见的认证方式有账号密码登录、手机验证码登录等 授权:则是该用…

html全局遮罩,通过websocket来实现实时发布公告

1.index.html代码示例 <div id"websocket" style"display:none;position: absolute;color:red;background-color: black;width: 100%;height: 100%;z-index: 100; opacity: 0.9; padding-top: 30%;padding-left: 30%; padding-border:1px; "onclick&q…