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

国内使用SSH稳定使用github

在 GitHub 上添加 SSH 密钥可以让你在推送代码时无需每次都输入用户名和密码,提高效率和安全性。以下是详细的步骤:


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

打开终端(Terminal)或 Git Bash(Windows),运行以下命令:

ls -al ~/.ssh

查看是否有以下文件:

  • id_rsaid_rsa.pub(旧版 RSA)
  • id_ed25519id_ed25519.pub(推荐,更安全)

如果已有 .pub 文件,说明你已经有 SSH 密钥,可以跳到第三步。


第二步:生成新的 SSH 密钥

如果没有密钥,运行以下命令生成(使用 ed25519 算法,推荐):

ssh-keygen -t ed25519 -C "your_email@example.com"
  • -t ed25519:指定加密类型(现代、安全)
  • -C "your_email@example.com":添加注释(通常是你的邮箱)

如果你使用旧系统不支持 ed25519,可以用 RSA:

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

按提示操作:

  1. 输入保存路径(直接回车使用默认路径)
  2. 设置密码(可选,建议设置以增强安全)

第三步:启动 SSH Agent

SSH Agent 可以帮你管理密钥,避免重复输入密码。

eval "$(ssh-agent -s)"

然后将密钥添加到 agent:

ssh-add ~/.ssh/id_ed25519

(如果是 RSA,则是 ~/.ssh/id_rsa


第四步:复制 SSH 公钥内容

运行以下命令复制公钥内容到剪贴板:

  • macOS:

    pbcopy < ~/.ssh/id_ed25519.pub
    
  • Windows (Git Bash):

    cat ~/.ssh/id_ed25519.pub | clip
    
  • Linux:

    xclip -sel clip < ~/.ssh/id_ed25519.pub
    

或者直接用 cat 查看内容并手动复制:

cat ~/.ssh/id_ed25519.pub

输出类似:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your_email@example.com


第五步:在 GitHub 添加 SSH 密钥

  1. 登录 GitHub
  2. 点击右上角头像 → Settings
  3. 左侧菜单选择 SSH and GPG keysNew SSH key
  4. 填写:
    • Title: 比如 My LaptopWork PC
    • Key type: 选择 Authentication
    • Key: 粘贴你复制的公钥内容(必须完整)
  5. 点击 Add SSH key

✅ 成功后你会看到绿色提示。


第六步:测试连接

在终端运行:

ssh -T git@github.com

首次连接会提示确认,输入 yes

如果看到类似:

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

说明配置成功 ✅


常见问题

  • Permission denied (publickey):检查 SSH agent 是否运行,密钥是否正确添加。
  • Agent admitted failure to sign using the key:运行 ssh-add 重新添加密钥。
  • 多个 GitHub 账号:需要配置不同的 SSH 配置文件(~/.ssh/config)。

✅ 总结

  1. 生成密钥 → 2. 启动 agent → 3. 复制公钥 → 4. 添加到 GitHub → 5. 测试连接

完成之后,你就可以用 git clone git@github.com:username/repo.git 进行免密操作了!

http://www.xdnf.cn/news/18590.html

相关文章:

  • 分布式账本:当不可篡改性遭遇法律拷问
  • ​Mac用户安装JDK 22完整流程(Intel版dmg文件安装指南附安装包下载)​
  • 【链表 - LeetCode】206. 反转链表【带ACM调试】
  • [身份验证脚手架] 前端认证与个人资料界面
  • 商密保护迷思:经营秘密到底需不需要鉴定?
  • 高并发内存池(1)-定长内存池
  • 通过python程序将实时监测数据写入excel软件进行保存是常用和非常实用的功能,本文教会大家怎么去搞定此功能
  • 塔能科技物联精准节能如何构建智慧路灯免疫系统
  • pycharm的matplotlib不显示动图问题的解决
  • `free` 内存释放函数
  • Linux --网络基础概念
  • 分布式事务的两种解决方案
  • K8s部署MySQL8.0数据库
  • 【大语言模型 17】高效Transformer架构革命:Reformer、Linformer、Performer性能突破解析
  • Baumer高防护相机如何通过Tiny-YOLO单类模型实现人体跌倒检测与跟踪(C#代码UI界面版)
  • 从 UMG 到 Unreal 引擎深层的 UI 定制艺术:Slate 底层 UI 框架简介
  • Python爬虫-解决在抓包的过程中,找不到接口地址的问题
  • 『深度编码』操作系统-进程之间的通信方法
  • 使用dumpbin指令分析Windows下的PE文件(伍)
  • 跨语言文化的统一语义真理:存在性、形式化及其对自然语言处理(NLP)深层语义分析的影响
  • Transformer实战(13)——从零开始训练GPT-2语言模型
  • Redis--day12--黑马点评--附近商铺用户签到UV统计
  • Trip Footprint_Trae Solo模式生成一个旅行足迹App
  • 【卷积神经网络详解与实例】2——卷积计算详解
  • 大模型训练方法全面解析:SFT、RFT、TRPO、DPO、PPO、GRPO、RLH、RLHF技术深度剖析
  • 14.Shell脚本修炼手册--玩转循环结构(While 与 Until 的应用技巧与案例)
  • 题解:P13754 【MX-X17-T3】Distraction_逆序对_前缀和_Ad-hoc_算法竞赛C++
  • java猜数字游戏(赌城主题版)
  • priority_queue和仿函数
  • 【CSP初赛】程序阅读3