当前位置: 首页 > news >正文

在 macOS 上配置 SSH 连接 GitHub

在 macOS 上使用 SSH 连接 GitHub,可以免去每次使用 Git 时输入密码的麻烦,提高开发效率。本文将介绍如何在 macOS 上生成 SSH 密钥并配置 GitHub 进行身份认证。


1. 检查是否已有 SSH 密钥

在终端运行以下命令,检查是否已有 SSH 密钥:

ls -al ~/.ssh

如果看到 id_rsaid_rsa.pub 这两个文件,说明已有 SSH 密钥,可跳过生成步骤。
在这里插入图片描述


2. 生成新的 SSH 密钥

如果没有 SSH 密钥,可以运行以下命令生成一个新的:

ssh-keygen -t rsa -b 4096 -C "your-email@example.com"
  • -t rsa:使用 RSA 加密算法
  • -b 4096:生成 4096 位密钥,提高安全性
  • -C "your-email@example.com":添加你的 GitHub 账号邮箱作为注释

终端会提示你保存密钥的路径,默认路径是 ~/.ssh/id_rsa,直接按 回车 即可。

系统还会提示输入 Passphrase(密码短语),可以选择输入(提高安全性)或直接回车跳过(更方便使用)。


3. 添加 SSH 密钥到 ssh-agent 并让其永久生效

为了避免每次使用 SSH 都要输入密钥密码,可以将密钥添加到 ssh-agent 中。

  1. 启动 ssh-agent
    eval "$(ssh-agent -s)"
    
  2. 添加 SSH 私钥到 ssh-agent
    ssh-add ~/.ssh/id_rsa
    

🔒 让 ssh-agent 记住密钥(避免重启后失效)

如果你想让 ssh-agent 记住你的密钥,每次开机后自动加载,可以执行以下命令:

echo "ssh-add ~/.ssh/id_rsa" >> ~/.zshrc  # 适用于 zsh(macOS 默认)
echo "ssh-add ~/.ssh/id_rsa" >> ~/.bashrc # 适用于 bash

然后重新加载 shell 配置:

source ~/.zshrc  # 如果你使用 zsh
source ~/.bashrc  # 如果你使用 bash

如果你使用 macOS Monterey 及以上版本,可能需要修改 ~/.ssh/config 以启用 UseKeychain 选项:

echo "Host github.com\n  AddKeysToAgent yes\n  UseKeychain yes\n  IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config

4. 添加 SSH 公钥到 GitHub

SSH 连接 GitHub 需要将 公钥 添加到 GitHub 账号。

  1. 显示 SSH 公钥内容:
    cat ~/.ssh/id_rsa.pub
    
  2. 复制终端输出的公钥内容。
  3. 打开 GitHub SSH Key 设置。
  4. 点击 “New SSH Key”
    • Title:输入描述,如 “MacBook SSH Key”。
    • Key Type:选择 Authentication Key
    • Key:粘贴公钥内容。
  5. 点击 “Add SSH Key”,完成绑定。

5. 测试 SSH 连接

使用以下命令测试 SSH 连接 GitHub:

ssh -T git@github.com

如果成功,会返回:

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

6. 让 Git 使用 SSH 方式

默认情况下,Git 可能仍然使用 HTTPS 访问 GitHub。可以运行以下命令让 Git 全局使用 SSH:

git config --global url."git@github.com:".insteadOf "https://github.com/"

这将确保 git clonegit pullgit push 默认使用 SSH。


7. 常见问题与解决方案

1. Permission denied (publickey). 错误

解决方法

  • 确保 SSH Key 已经添加到 GitHub。
  • 运行 ssh-add -l 确保密钥已经加载。
  • 重新运行 ssh -T git@github.com 进行测试。

2. Agent admitted failure to sign using the key

解决方法
重新添加 SSH 密钥到 ssh-agent

ssh-add ~/.ssh/id_rsa

3. Git 操作仍然要求输入用户名和密码

解决方法

  • 确保 GitHub 远程地址是 SSH 形式:
    git remote -v
    
    如果是 https://,修改为 SSH:
    git remote set-url origin git@github.com:your-username/your-repo.git
    

8. 总结

至此,你已经成功配置 SSH 连接 GitHub,并让 Git 默认使用 SSH。这样,在 git clonegit pullgit push 时,都不需要再输入密码,极大提升开发效率。

完成的步骤:

  • 生成 SSH 密钥
  • 添加密钥到 ssh-agent 并配置永久生效
  • 将公钥添加到 GitHub
  • 测试 SSH 连接
  • 配置 Git 使用 SSH

现在,你可以无密码使用 GitHub 了!🚀

相关文章:

在 macOS 上配置 SSH 连接 GitHub

在 macOS 上使用 SSH 连接 GitHub,可以免去每次使用 Git 时输入密码的麻烦,提高开发效率。本文将介绍如何在 macOS 上生成 SSH 密钥并配置 GitHub 进行身份认证。 1. 检查是否已有 SSH 密钥 在终端运行以下命令,检查是否已有 SSH 密钥&#…...

常考计算机操作系统面试习题(二)(中)

目录 24. 操作系统的主要功能有哪些? 25. 文件的属性主要有哪些? 26. 对文件的基本操作主要有哪些? 27. 目录的基本操作有哪些? 28. 目录的逻辑结构有哪些种? 29. 简述银行家算法的Available、Max、Allocation、…...

手机录视频风噪太大?华为Pura X“AI降风噪“太硬核了

你是否也在用手机录像时,比如大海海浪、阅览群山、空旷的原野的时候,呼啸的风总是能沦为刺耳的噪音,让精心构思的镜头,最后因为呼啸的风声最终成为“灾难现场”。传统的解决方式往往陷入两难:物理防风罩影响收音指向性…...

React 事件处理

1. React 事件处理的基本概念 React 事件处理的特点&#xff1a; 驼峰命名法&#xff1a;事件名采用驼峰命名法&#xff0c;如 onClick、onChange。JSX 语法&#xff1a;事件处理函数通过 JSX 传递给元素&#xff0c;如 <button onClick{handleClick}>。合成事件&#…...

搭建React简单项目

一、项目构建 目录结构&#xff1a; 安装脚手架 npm install -g create-react-app // or yarn add -g create-react-app 一、项目版本 1、react&#xff1a;"^18.3.1"&#xff1b; 2、react-router-dom&#xff1a;"^6.23.1"&#xff1b; 3、项目创…...

ROCK 280A-M 工业级电调:高性能无人机动力心脏,重塑严苛场景飞行边界

—— 工业级动力控制系统解决方案 —— 【产品概述】 针对工业级无人机高负载、复杂工况需求&#xff0c;南昌长空科技的ROCK 280A-M 电调以航空级标准打造动力控制中枢。采用工业级控制算法与智能自适应系统&#xff0c;为多旋翼 / 固定翼无人机提供稳定动力支撑&#xff0c;突…...

带你从入门到精通——自然语言处理(十. BERT)

建议先阅读我之前的博客&#xff0c;掌握一定的自然语言处理前置知识后再阅读本文&#xff0c;链接如下&#xff1a; 带你从入门到精通——自然语言处理&#xff08;一. 文本的基本预处理方法和张量表示&#xff09;-CSDN博客 带你从入门到精通——自然语言处理&#xff08;二…...

八股JAVA并发

多线程 线程的创建方式有哪些? 1.继承Thread类 2.实现Runnable接口 3.Callable接口FutureTask 4.线程池 1.继承Thread类 这是最直接的一种方式&#xff0c;用户自定义类继承java.lang.Thread类&#xff0c;重写其run()方法&#xff0c;run()方法中定义了线程执行的具体任务。…...

#include <hello.h> 与 #include “hello.h“的区别

#include <hello.h> 和 #include "hello.h" 在C/C中用于包含头文件&#xff0c;但它们在搜索头文件时的行为有所不同&#xff0c;这可能导致前者找不到头文件的情况。 ### 区别 1. **搜索路径不同** - #include "hello.h"&#xff1a;编译器首先…...

PyPDF2简单介绍

PyPDF2 是一个开源的纯 Python 库&#xff0c;用于读取、操作和创建 PDF 文件。它最初是 PyPDF 的改进版&#xff0c;功能更丰富。 安装&#xff1a; bash pip install PyPDF2核心功能 1.合并 PDF 文件 python from PyPDF2 import PdfMergermerger PdfMerger() merger.appe…...

记录flutter编译项目遇到的问题

目录 1.更换flutter版本 2.解压到指定地址 3.在Android Studio配置 问题: Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source! Resolving dependencies... The current Dart SDK version is 3.3.0. Because coach d…...

小米AX6000上安装tailscale

在之前的文章中&#xff0c;已经介绍了如何解锁ax6000的ssh&#xff0c;以及必坑指南。 今天突发奇想&#xff0c;为了不让我的nas天天开着tailscale&#xff0c;所以我想让我的tailscale运行在路由器&#xff0c;这样完美实现穿透。 首先&#xff0c;通过ssh登录ax6000&#x…...

git使用经验(一)

git使用经验&#xff08;一&#xff09; 我之前已经下载了别人的代码&#xff0c;我想在此基础上进行修改&#xff0c;并移动到自己的私有仓库&#xff0c;方便上传到自己的私有仓库自己进行版本控制 git clone下来别人的代码&#xff0c;删除有关git的隐藏文件 进入到自己的…...

C语言【文件操作】详解中

引言 介绍和文件操作中文件的顺序读写相关的函数 看这篇博文前&#xff0c;希望您先仔细看一下这篇博文&#xff0c;理解一下文件指针和流的概念&#xff1a;C语言【文件操作】详解上-CSDN博客文章浏览阅读606次&#xff0c;点赞26次&#xff0c;收藏4次。先整体认识一下文件是…...

基于SpringBoot的在线学习平台

项目介绍 平台采用B/S结构&#xff0c;后端采用主流的SpringBoot语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。是一个综合的在线学习平台&#xff0c;该平台有管理员、教师、学生三类角色&#xff0c;各项功能根据不同角色分别设定。 整个平台包括前台和后台两个部分…...

鸿蒙生态开发

鸿蒙生态开发概述 鸿蒙生态是华为基于开源鸿蒙&#xff08;OpenHarmony&#xff09;构建的分布式操作系统生态&#xff0c;旨在通过开放共享的模式连接智能终端设备、操作系统和应用服务&#xff0c;覆盖消费电子、工业物联网、智能家居等多个领域。以下从定义与架构、核心技术…...

qt实现一个简单http服务器和客户端

一、功能简介 服务器&#xff1a; 登录功能、下载文件功能 客户端&#xff1a; 登录功能、下载文件功能、上传成绩功能 二、服务器代码 //HttpServer.h #ifndef HTTPSERVER_H #define HTTPSERVER_H#include <QMainWindow> #include <QTcpSocket> #include <QTc…...

深入理解Linux网络随笔(五):深度理解本机网络I/O

深入理解Linux网络随笔&#xff08;五&#xff09;&#xff1a;深度理解本机网络I/O 文章目录 深入理解Linux网络随笔&#xff08;五&#xff09;&#xff1a;深度理解本机网络I/O本机发送过程本机接收过程总结 分析本机网络I/O部分源码需要知道本机I/O是什么&#xff1f;扮演什…...

Debian12生产环境配置笔记

在 Debian 12 上进行生产环境配置的详细步骤&#xff0c;涵盖软件更新、基础软件安装、Docker 及 Redis 部署&#xff0c;以及 Nginx 配置多个虚拟主机等内容。所有命令均以 root 用户身份执行&#xff0c;无需添加 sudo 1. 更新软件 首先&#xff0c;确保系统上的所有软件包…...

工业物联网的范式革命:从“云边“ 到“边边” 协的技术跃迁

基于DIOS操作系统的去中心化重构 一、云边协同模式的局限性&#xff1a;技术瓶颈与成本困局 当前工业物联网主流的云边协同架构&#xff08;Cloud-Edge Collaboration&#xff09;已暴露出显著短板&#xff0c;其核心问题源于对中心云的过度依赖&#xff1a; ​带宽资源挤占与…...

python学习笔记--实现简单的爬虫(二)

任务&#xff1a;爬取B站上最爱欢迎的编程课程 网址&#xff1a;编程-哔哩哔哩_bilibili 打开网页的代码模块&#xff0c;如下图&#xff1a; 标题均位于class_"bili-video-card__info--tit"的h3标签中&#xff0c;下面通过代码来实现&#xff0c;需要说明的是URL中…...

【蓝桥杯速成】| 8.回溯算法

因为在进行背包问题的练习时&#xff0c;发现很多题目需要回溯&#xff0c;但本人作为小白当然是啥也不知道 那么就先来补充一下回溯算法的知识点&#xff0c;再进行练习 理论基础 回溯算法本质上是一种递归函数&#xff0c;是纯暴力搜索方法&#xff0c; 适合组合问题、排列…...

聚水潭商品信息集成MySQL的高效解决方案

聚水潭商品信息集成到MySQL的技术案例分享 在数据驱动的业务环境中&#xff0c;如何高效、准确地将聚水潭系统中的商品信息集成到MySQL数据库&#xff0c;是许多企业面临的重要挑战。本文将详细介绍一个实际运行的方案——“聚水潭-商品信息查询-->BI崛起-商品信息表_copy”…...

【数学建模】多目标规划模型:原理、方法与应用

多目标规划模型&#xff1a;原理、方法与应用 文章目录 多目标规划模型&#xff1a;原理、方法与应用引言1. 多目标规划的基本概念1.1 数学模型1.2 Pareto最优解/有效解1.3 满意解方法 2. 多目标规划的主要求解方法2.1 加权求和法2.2 ε-约束法2.3 理想点法2.4 优先级法&#x…...

基于Spring Boot的党员学习交流平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

Flink CDC 与 SeaTunnel CDC 简单对比

Flink CDC 与 SeaTunnel CDC 简单对比 CDC 技术概述 变更数据捕获&#xff08;Change Data Capture&#xff0c;简称 CDC&#xff09;是一种用于捕获数据库中数据变更的技术&#xff0c;能够实时识别、捕获并输出数据库中的插入、更新和删除操作。CDC 技术在现代数据架构中扮…...

ARM 汇编基础

ARM 汇编是嵌入式开发、操作系统底层编程和性能优化的核心技能之一。以下是一份系统的 ARM 汇编指令教学指南&#xff0c;涵盖基础语法、核心指令、编程模式和实用示例。 ​1. ARM 汇编基础 ​ 1.1 寄存器 ARM 架构&#xff08;32位&#xff09;包含 ​16 个通用寄存器​&…...

【嵌入式狂刷100题】- 1基础知识部分

准备新开专栏【嵌入式狂刷100题】&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f927;加油!!!&#xff0c;内容包括 基础知识部分操作系统部分处理器架构部分外设驱动部分通信协议部分存储器管理部分硬件设计部分多媒体部分调试故障排除部分编码开发部…...

【模板】计算几何入门

来源 计算几何基本模板&#xff08;二维&#xff09; 目录 基本设置点 向量 Point&#xff08;Vector&#xff09;点积&#xff08;数量积、内积&#xff09;向量积&#xff0c;叉积两点间距离向量的模单位向量两向量的夹角判断点在直线的哪边逆转角 线 直线表达式Line判断…...

PostgreSQL 数据库中导入大量数据

在 PostgreSQL 数据库中导入大量数据,可根据数据来源和格式选择不同的方法。以下为你详细介绍几种常见的方式: 1. 使用 COPY 命令(适用于本地数据文件) COPY 命令是 PostgreSQL 内置的高效数据导入工具,适合处理本地的数据文件。 步骤 准备数据文件 确保你的数据文件格…...

DeepSeek和Kimi在Neo4j中的表现

以下是2个最近爆火的人工智能工具&#xff0c; DeepSeek:DeepSeek Kimi: Kimi - 会推理解析&#xff0c;能深度思考的AI助手 1、提示词&#xff1a; 你能帮我生成一个知识图谱吗&#xff0c;等一下我会给你一篇文章&#xff0c;帮我从内容中提取关键要素&#xff0c;然后以N…...

xQueueSendToBack的中文释义和裸机调用

如果不在 FreeRTOS 环境下运行&#xff0c;而是裸机环境中实现类似的功能&#xff0c;需要移除 xQueueSendToBack 的依赖&#xff0c;并直接调用 CAN 发送函数。以下是修改后的代码和实现思路&#xff1a; 1. FreeRTOS 中的 xQueueSendToBack 功能 作用&#xff1a;将消息发送…...

2025年- G24-Lc98-217.包含重复(使用hashSet解决)-java版

1.题目描述 2.思路 思路一&#xff1a; 我的想法是直接用集合来判断&#xff0c;如果集合的元素不能添加说明之前已经存在这个元素&#xff0c;也就是发现了重复元素&#xff0c;所以返回false。 补充一&#xff1a; Map、ArrayList的定义和声明 3.代码实现 class Soluti…...

【树莓派驱动验证步骤】

终端操作和输出&#xff1a; 清理项目 adaraspberrypi:~/mt3502 $ make clean make -C /lib/modules/6.6.51rpt-rpi-v8/build M/home/ada/mt3502 clean make[1]: 进入目录“/usr/src/linux-headers-6.6.51rpt-rpi-v8”CLEAN /home/ada/mt3502/Module.symvers make[1]: 离开…...

百度SEO和必应SEO优化方法

如需SEO服务&#xff0c;可以搜索&#xff1a;深圳市信科网络科技有限公司。 一、搜索引擎生态格局&#xff1a;流量入口的重新洗牌 2025 年&#xff0c;中国 PC 端搜索引擎市场正经历戏剧性变革。StatCounter 数据显示&#xff0c;必应凭借 Edge 浏览器的预装优势与 ChatGPT …...

2025年3月AI搜索发展动态与趋势分析:从技术革新到生态重构

025年3月AI搜索发展动态与趋势分析&#xff1a;从技术革新到生态重构 一、行业动态&#xff1a;巨头布局与技术升级 谷歌推出“AI模式”&#xff0c;重新定义搜索体验 谷歌上线全新“AI模式”&#xff0c;集成多模态交互与实时数据能力&#xff0c;用户可通过文本、图片或语音…...

封闭图形个数

0封闭图形个数 - 蓝桥云课 小蓝对蓝桥王国的数字大小规则十分感兴趣。现在&#xff0c;他将给定你n个数a1, a2, ..., an&#xff0c;请你按照蓝桥王国的数字大小规则&#xff0c;将这n数从小到大排序&#xff0c;并输出排序后结果。 输入格式 第一行包含一个整数n&#xff0…...

VSCode 抽风之 两个conda环境同时在被激活

出现了神奇的(toolsZCH)(base) 提示符&#xff0c;如下图所示&#xff1a; 原因大概是&#xff1a;conda 环境的双重激活&#xff1a;可能是 conda 环境没有被正确清理或初始化&#xff0c;导致 base 和 toolsZCH 同时被激活。 解决办法就是 &#xff1a;conda deactivate 两次…...

Django 生产环境静态文件处理

python manage.py collectstatic 是 Django 提供的一个非常重要的管理命令&#xff0c;用于将项目中的静态文件收集到一个指定的目录中。这在部署 Django 项目时尤其重要&#xff0c;因为静态文件需要被 Web 服务器&#xff08;如 Nginx 或 Apache&#xff09;提供服务&#xf…...

语法: result=frexp(value, exp);

FREXP()是C语言里的内部函数&#xff0c;根据需要了解。 语法: resultfrexp(value, &exp); 参数: value是一个浮点数; exp是一个有符号的整型数; 返回值: 返回值result是一个浮点数&#xff0c;其有效范围是 0.5&#xff08;含&#xff09;到 1.0&#xff08;不含&…...

ArcGIS Pro 制作风台路径图:从数据到可视化

一、引言 台风&#xff0c;作为自然界极具破坏力的气象现象之一&#xff0c;其路径的精准预测与直观呈现对于防灾减灾工作至关重要。 在数字化时代&#xff0c;借助专业的地理信息系统&#xff08;GIS&#xff09;软件&#xff0c;如 ArcGIS Pro&#xff0c;我们能够高效地将…...

#pandas #python#数据标注 pd.crosstab()

题目&#xff1a; device_status.txt 存储了工业互联网平台上收集的设备运行状态数据&#xff0c;数 据中有以下内容&#xff1a; device_id&#xff1a;设备编号&#xff0c;字符串类型&#xff0c;长度为 8 status_time&#xff1a;状态时间&#xff0c;日期时间类型&…...

self Attention为何除以根号dk?(全新角度)

全网最独特解析&#xff1a;self Attention为何除根号dk&#xff1f; 一、假设条件&#xff1a;查询向量和键向量服从正态分布 假设查询向量 q i q_i qi​和键向量 k j k_j kj​的每个分量均为独立同分布的随机变量&#xff0c;且服从标准正态分布&#xff0c;即&#xff1a;…...

SpringBoot @Scheduled注解详解

Scheduled 是 Spring Framework 中用于实现定时任务的核心注解&#xff0c;能够方便地配置方法在特定时间或周期执行。以下是详细解析&#xff1a; 1. 启用定时任务‌ 在 Spring Boot 中&#xff0c;需在配置类添加 EnableScheduling 注解以启用定时任务支持&#xff1a; Co…...

在大数据开发中spark是指什么?

hello宝子们...我们是艾斯视觉擅长ui设计和前端数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在数字经济蓬勃发展的今天&#xff0c;数据已成为驱动商业决策、科学研究和城市治理的核心燃料。面对…...

从点灯开始的51单片机生活

陵谷纷纭新事改&#xff0c;筑台土石未应迟。 目录 sfr与sbit&#xff1f;不靠定时器的delay_ms延时函数所谓寄存器 sfr与sbit&#xff1f; 这第一课咱们主要来先理解一下sfr与sbit&#xff0c;以下可能是咱们这些新手朋友常见的点灯代码&#xff1a; #include<regx52.h&g…...

AI大模型落地:昆仑技术的东方解法

DeepSeek的横空出世&#xff0c;一举打破“算力封锁”的神话&#xff0c;标志着中国AI企业在AI大模型技术路径上取得彻底突破。 不过&#xff0c;DeepSeek等AI大模型的突破&#xff0c;固然大幅推动AI产业的整体发展&#xff0c;但算力基础设施能否跟上&#xff0c;也将决定未…...

Spring Boot 与 MyBatis Plus 整合 KWDB 实现 JDBC 数据访问

​ 引言 本文主要介绍如何在 IDEA 中搭建一个使用 Maven 管理的 Spring Boot 应用项目工程&#xff0c;并结合在本地搭建的 KWDB 数据库&#xff08;版本为&#xff1a;2.0.3&#xff09;来演示 Spring Boot 与 MyBatis Plus 的集成&#xff0c;以及对 KWDB 数据库的数据操作…...

VSCode+arm-none-eabi-gcc交叉编译+CMake构建+OpenOCD(基于STM32的标准库/HAL库)

前言&#xff1a;什么是CMake&#xff1f; Answer&#xff1a;简而言之&#xff0c;CMake是Make的maker。 一、CMake的安装 进入CMake官网的下载地址Get the Software&#xff0c;根据系统安装对应的Binary distributions。 或者在CMake——国内镜像获取二进制镜像安装包。 …...

MarsCode AI实战:利用DeepSeek 快速搭建你的口语学习搭子

资料来源&#xff1a;火山引擎-开发者社区 成品抢先看&#xff01; 自从MarsCode AI Chat模型全新升级&#xff0c;接入 Deepseek-R1、Deepseek-V3和豆包大模型1.5 三大模型&#xff0c;越来越多朋友注意到了AI编程能给我们带来的无限可能&#xff0c;也开始跃跃欲试想要尝试从…...