使用SSH进行GitHub的推送

使用SSH进行GitHub的推送是一种安全且便捷的方法。
以下是详细的步骤,配置SSH并通过SSH推送到GitHub:

对于同一个电脑,已经配置过的可以直接从步骤五开始

步骤一:检查是否已有SSH密钥

首先,检查计算机上是否已经有SSH密钥对:

ls -al ~/.ssh

如果看到id_rsaid_rsa.pub(或id_ed25519id_ed25519.pub)文件,说明已经有SSH密钥。如果没有,请继续下面的步骤生成一个新的SSH密钥对。

我的:

(base) rooter@rooter:~$ ls -al ~/.ssh
total 12
drwx------  2 rooter rooter 4096 1014 21:56 .
drwxr-xr-x 30 rooter rooter 4096 1014 22:14 ..
-rw-r--r--  1 rooter rooter  888 1014 22:23 known_hosts

~/.ssh 目录中只有 known_hosts 文件,没有 SSH 密钥对(如 id_rsa 和 id_rsa.pub 或 id_ed25519 和 id_ed25519.pub)

步骤二:生成新的SSH密钥

  1. 生成SSH密钥:

    推荐使用Ed25519算法(如果你的系统支持),因为它更安全且性能更好。如果不支持,可以使用RSA。

    ssh-keygen -t ed25519 -C "your_email@example.com"
    
       ssh-keygen -t ed25519 -C 10xxxxxxx3@qq.com
    

    如果需要使用RSA,可以使用:

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
  2. 按照提示操作:

    • 保存密钥位置: 默认情况下,按回车键选择默认路径(~/.ssh/id_ed25519~/.ssh/id_rsa)。
    • 设置密码短语(可选): 为密钥设置一个密码短语以增加安全性,或者直接按回车键跳过。
(base) rooter@rooter:~$ ssh-keygen -t ed25519 -C 1000000003@qq.com
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/rooter/.ssh/id_ed25519): 
/home/rooter/.ssh/id_ed25519 already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/rooter/.ssh/id_ed25519
Your public key has been saved in /home/rooter/.ssh/id_ed25519.pub
The key fingerprint is:
omit
The key's randomart image is:
omit

步骤三:启动SSH代理并添加密钥

  1. 启动SSH代理:

    eval "$(ssh-agent -s)"
    
  2. 添加SSH密钥到代理:

    ssh-add ~/.ssh/id_ed25519
    

    或者,如果使用的是RSA密钥:

    ssh-add ~/.ssh/id_rsa
    

步骤四:将SSH公钥添加到GitHub

  1. 复制SSH公钥内容:

    cat ~/.ssh/id_ed25519.pub
    

    或者,如果使用的是RSA密钥:

    cat ~/.ssh/id_rsa.pub
    

    复制输出的内容(以ssh-ed25519ssh-rsa开头的字符串)。
    全部都是

  2. 登录GitHub并添加SSH密钥:

    • 登录你的GitHub账户。
    • 点击右上角的头像,选择“Settings(设置)”。
    • 在左侧菜单中选择“SSH and GPG keys”。
    • 点击“New SSH key”按钮。
    • 填写一个标题(如“我的电脑”),并在“Key”字段中粘贴刚才复制的公钥内容。
    • 点击“Add SSH key”。

步骤五:验证SSH连接

在终端中运行以下命令,验证是否成功连接到GitHub:

ssh -T git@github.com

第一次连接时,可能会提示确认主机指纹,输入yes继续。

成功连接后,应该会看到如下消息:

Hi galaxy-vagrant! You've successfully authenticated, but GitHub does not provide shell access.

步骤六:配置Git远程仓库使用SSH

  1. 移除错误的远程仓库URL:

    由于之前使用的是HTTPS URL,需要先移除:

    git remote remove origin
    
  2. 添加正确的SSH远程仓库URL:

    SSH格式的URL为git@github.com:用户名/仓库名.git
    replace myusr/myrepo.git

    git remote add origin git@github.com:myusr/myrepo.git
    
  3. 验证远程仓库URL是否正确:

    git remote -v
    

    应该显示类似如下内容:

    origin  git@github.com:myusr/myrepo.git(fetch)
    origin  git@github.com:myusr/myrepo.git (push)
    

步骤七:推送分支到GitHub

现在,可以使用SSH方式推送分支了:

git push -u origin v1.0
  • -u 参数将本地分支 v1.0 与远程的 v1.0 分支关联起来,方便后续使用 git pushgit pull

常见问题排查

  1. 权限问题:

    • 确认SSH公钥已正确添加到GitHub账户。
    • 确保使用的是正确的GitHub账户,与添加公钥的账户一致。
  2. SSH代理问题:

    • 确保SSH代理已启动并添加了密钥。

    • 可以重启SSH代理并重新添加密钥:

      eval "$(ssh-agent -s)"
      ssh-add ~/.ssh/id_ed25519
      
  3. 防火墙或网络问题:

    • 确保网络允许SSH连接到GitHub(端口22)。

    • 如果公司或校园网络有限制,可以尝试使用GitHub提供的替代端口:

      ssh -T -p 443 git@ssh.github.com
      
  4. 确认仓库存在:

    • 确认仓库 myrepo 存在于 myusr 账户下,并且有推送权限。

常见问题解答

一旦在同一个电脑上成功配置了 SSH 密钥,并将公钥添加到了 GitHub 账户中,通常情况下不需要每次都重新配置。只要满足以下条件,就可以直接通过 SSH 进行远程连接和操作:

1. SSH 密钥对持久存在
  • 私钥 (~/.ssh/id_rsa~/.ssh/id_ed25519)公钥 (~/.ssh/id_rsa.pub~/.ssh/id_ed25519.pub) 文件保存在你的电脑上,并且没有被删除或移动。
  • 如果你为私钥设置了密码短语,确保你记得密码,并且 SSH 代理(ssh-agent)在需要时能够访问该密码。
2. SSH 代理(ssh-agent)正在运行
  • SSH 代理 用于管理你的私钥,确保你在需要时能够自动输入密码短语(如果设置了)。

  • 在大多数现代操作系统中,SSH 代理会在登录时自动启动并加载你的私钥。如果没有自动启动,你可以手动启动并添加密钥:

    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_ed25519  # 或者使用 id_rsa
    

    为了简化这一过程,你可以将上述命令添加到你的 shell 启动脚本(如 .bashrc.zshrc)中。

3. 公钥已正确添加到 GitHub
  • 确保你生成的 公钥 已经正确添加到了你的 GitHub SSH 密钥设置 中。
  • 如果你更换了电脑或重新生成了 SSH 密钥,需要将新的公钥添加到 GitHub。
4. 验证远程连接

你可以通过以下命令验证 SSH 连接是否正常工作:

ssh -T git@github.com

成功连接后,你应该会看到类似如下的消息:

Hi your-username! You've successfully authenticated, but GitHub does not provide shell access.
5. 配置 Git 远程仓库使用 SSH URL

确保你的 Git 仓库的远程地址使用的是 SSH URL 而不是 HTTPS URL。你可以通过以下命令查看当前的远程仓库地址:

git remote -v

如果显示的是 HTTPS 地址(如 https://github.com/username/repo.git),你可以将其更改为 SSH 地址:

git remote set-url origin git@github.com:username/repo.git
6. 无需频繁重新配置

在大多数情况下,只要满足上述条件,你无需每次都重新配置 SSH。你的 SSH 配置会一直有效,直到你手动更改或删除相关的密钥和配置。

注意事项
  1. 安全性

    • 保护私钥:确保你的私钥文件(如 ~/.ssh/id_rsa~/.ssh/id_ed25519)权限正确(chmod 600),并且不要泄露给他人。
    • 密码短语:为私钥设置密码短语可以增加安全性,即使私钥被盗,攻击者也无法轻易使用它。
  2. 多设备使用

    • 如果你在多台设备上工作,每台设备需要各自生成 SSH 密钥对,并将各自的公钥添加到 GitHub。
  3. 密钥管理

    • 如果你怀疑密钥被泄露,及时在 GitHub 上删除相关公钥,并生成新的密钥对。
  4. 更新 GitHub 配置

    • 如果你更改了 GitHub 用户名或迁移了仓库,确保更新本地仓库的远程地址。
总结

一旦你在电脑上正确配置了 SSH 密钥,并将公钥添加到了 GitHub,你通常无需每次都重新配置。只需确保 SSH 代理正在运行,私钥文件完好,并且远程仓库使用的是 SSH URL,就可以方便、安全地进行 Git 操作。如果在使用过程中遇到连接问题,可以通过上述步骤进行排查和验证。

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

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

相关文章

数据结构——顺序表的基本操作

前言 介绍 🍃数据结构专区:数据结构 参考 该部分知识参考于《数据结构(C语言版 第2版)》24~28页 补充 此处的顺序表创建是课本中采用了定义方法为SqList Q来创建,并没有使用顺序表指针的方法,具体两个…

视频云存储/音视频流媒体视频平台EasyCVR视频汇聚平台在欧拉系统中启动失败是什么原因?

视频监控/视频集中存储/磁盘阵列EasyCVR视频汇聚平台具备强大的拓展性和灵活性,支持多种视频流的外部分发,如RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、WebRTC、fmp4等,这为其在各种复杂环境下的部署提供了便利。 安防监控EasyCVR视频汇聚平…

vue elementui table编辑表单时,弹框增加编辑明细数据

需求: 前端进行新增表单时&#xff0c;同时增加表单的明细数据。明细数据部分&#xff0c;通过弹框方式增加或者编辑。 效果图&#xff1a; 代码&#xff1a; <!-- 新增主表弹窗 Begin --><el-dialog:title"titleInfo"top"5vh"centerwidth"…

mysql innodb 引擎如何直接复制数据库文件?

mysql innodb 引擎如何直接复制数据库文件&#xff1f;介绍如下&#xff1a; 1、首先找到数据库文件所在位置 一般可以看my.conf/my.ini配置的文件的“datadir” 看示例&#xff1a; “MAMP”在Macos下的数据库文件位置&#xff1a; /Library/Application Support/appsolu…

想要搭建陪玩系统前后端该如何去做?uniapp后端php开发开源圈子源码uniapp社区论坛源码下载源码网

陪玩系统 陪玩日记 同城陪玩 陪玩工作室 陪聊 app开发 线下伴游 伴游系统 运营线下陪玩 轻资产创业 城市玩伴 小程序开发 app开发 城市玩伴 同城陪玩 运营陪玩系统 线下陪玩系统开发 陪玩软件 私人向导 线下陪玩系统 单身经济 助教 搭子 系统部署与配置 服务器环境配置&#…

CTFHUB技能树之SQL——字符型注入

开启靶场&#xff0c;打开链接&#xff1a; 直接指明是SQL字符型注入&#xff0c;但还是来判断一下 &#xff08;1&#xff09;检查是否存在注入点 1 and 11# 返回正确 1 and 12# 返回错误 说明存在SQL字符型注入 &#xff08;2&#xff09;猜字段数 1 order by 2# 1 order…

QT--单选按钮(QRadioButton)和复选按钮(QCheckBox)

在Qt中&#xff0c;单选按钮&#xff08;QRadioButton&#xff09;和复选按钮&#xff08;QCheckBox&#xff09;是两种常用的用户界面控件&#xff0c;它们的主要区别在于选择行为和用途&#xff1a; QRadioButton&#xff08;单选按钮&#xff09; 选择行为&#xff1a;单选…

Gin框架操作指南01:开山篇

Gin是目前最流行&#xff0c;性能最好的的GoWeb框架&#xff0c;几乎成为了学习GoWeb必备的知识。本人最近也在学Gin&#xff0c;在b站搜了很多教程&#xff0c;发现有的教程不够详细&#xff0c;有的教程工具包安装有问题&#xff0c;而官方文档的很多示例代码又不全&#xff…

抖音解压视频素材宝库

在快节奏的生活中&#xff0c;解压视频成为抖音上的热门内容类型&#xff0c;想要制作出精彩的解压视频&#xff0c;优质素材必不可少。今天&#xff0c;为大家推荐几个超棒的抖音解压视频素材网站&#xff0c;让你的创作之路轻松无忧&#xff01; 蛙学网 作为国内知名的短视频…

深度解析计数排序:原理、特性与应用

目录 &#x1f4af;引言 &#x1f4af;计数排序的原理 ⭐核心概念 ⭐工作流程 1.确定计数范围 2.统计元素出现次数 3.计算累计计数 4.放置元素到正确位置 &#x1f4af;计数排序的实现 ⭐代码示例&#xff08;以 C 为例&#xff09; ⭐时间复杂度分析 ⭐稳定性分析…

【AI学习】Mamba学习(七):HiPPO通用框架介绍

HiPPO这篇论文《HiPPO: Recurrent Memory with Optimal Polynomial Projections》&#xff0c;提出了一个通用框架。 我们再重新看一下论文的摘要&#xff1a; 从连续数据中学习的一个核心问题是&#xff0c;随着更多数据的处理&#xff0c;以增量方式表示累积历史。我们介绍了…

「规模焦虑」如影随形,库迪咖啡想靠便捷店突围能行吗?

作者 | 辰纹 来源 | 洞见新研社 “我有一个广东的小兄弟&#xff0c;做了9年的奶茶&#xff0c;后来因为觉得咖啡是一个上升期的赛道&#xff0c;所以毅然决然拿了45万加盟了库迪咖啡&#xff0c;结果全亏损完了&#xff0c;相当于只买了一个配方。” 抖音博主茶饮圈大山哥分…

Vite创建Vue3项目以及Vue3相关基础知识

1.创建Vue3项目 1.运行创建项目命令 # 使用 npm npm create vitelatest2、填写项目名称 3、选择前端框架 4、选择语法类型 5、按提示运行代码 不出意外的话&#xff0c;运行之后应该会出现 下边这个页面 6.延伸学习&#xff1a;对比webpack和vite&#xff08;这个是面试必考…

【微服务】springboot远程docker进行debug调试使用详解

目录 一、前言 二、线上问题常用解决方案 2.1 微服务线上运行中常见的问题 2.2 微服务线上问题解决方案 2.3 远程debug概述 2.3.1 远程debug原理 2.3.2 远程debug优势 三、实验环境准备 3.1 搭建springboot工程 3.1.1 工程结构 3.1.2 引入基础依赖 3.1.3 添加配置文…

400行程序写一个实时操作系统(九):替换FreeRTOS的内存管理算法

前言 通过前面几章&#xff0c;笔者带领大家完成了内存管理算法的编写。 我们完成的内存管理算法&#xff0c;被称为小内存管理算法。我们也可以将它作为一个库&#xff0c;在后续的嵌入式开发中&#xff0c;使用我们自己编写的malloc&#xff0c;不仅效率会更高&#xff0c;…

机器学习笔记-2

文章目录 一、Linear model二、How to represent this function三、Function with unknown parameter四、ReLU总结、A fancy name 一、Linear model 线性模型过于简单&#xff0c;有很大限制&#xff0c;我们需要更多复杂模式 蓝色是线性模型&#xff0c;线性模型无法去表示…

如何匿名浏览网站,保护在线隐私?

在现如今的网络世界&#xff0c;在线隐私已不复存在。你总是被跟踪&#xff0c;即使你使用隐身模式也无济于事。隐身模式会阻止浏览器保存你的浏览历史记录。但它并不能阻止你的互联网服务提供商 (ISP)、雇主、学校、图书馆或你访问的网站看到你在网上做什么。 更有不法分子在未…

Lumerical学习——资源管理和运行模拟

一、资源管理&#xff08;Resource Manager&#xff09; 在模拟计算前必须对计算资源进行配置。采用资源管理器可以完成这项任务。单击主工具条的“资源&#xff08;Resources&#xff09;”按钮&#xff08;见上图&#xff09;就可以打开资源管理器。通常每个计算机只需设置一…

大型生物制药企业如何实现安全又高效地跨网域数据传输?

大型生物制药企业由于组织结构庞大、业务覆盖研发、生产及销售&#xff0c;因此内部会再细分为多个管理单位&#xff0c;包括研发部门、生产部门、质量控制部门、供应链管理部门及营销部和日常业务支撑部门等。在物理区域划分上&#xff0c;大型生物制药企业会设立实验室、研发…

摇人摇人, JD内推岗位(社招+校招)

摇人摇人, 有找工作的家人们看过来啊~ 虚位以待, 快到碗里来 算法开发工程师岗 京东云 北京|T7, 5-10年 岗位职责&#xff1a; 参与基于RAG知识库平台和ChatBI产品打造和商业化落地&#xff0c;进行相关技术&#xff1a;包括OCR、文档拆分、意图理解、多轮对话、NL2SQL、Embed…