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

通过 SSH 方式访问 GitHub 仓库

我们来一步一步讲解如何让 Git 通过 SSH 方式访问 GitHub 仓库,包括从零开始的详细步骤,适用于大多数系统(Linux、macOS、Windows Git Bash)。

注意最好只用 Git bash 比较好!他能够直接在 Windows 系统上面使用一些 Linux 命令,很方便!


🧭 目标

  • ✅ 本地生成 SSH 密钥
  • ✅ 添加 SSH 公钥到 GitHub
  • ✅ 配置 Git 使用 SSH URL
  • ✅ 验证是否成功连接

🛠️ 步骤一:生成 SSH 密钥

打开终端,执行:

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

🔒 如果你的系统不支持 ed25519(如旧系统),可以用 -t rsa -b 4096

系统会提示你保存路径:

Enter file in which to save the key (/home/you/.ssh/id_ed25519):

直接按回车使用默认路径,或自定义一个文件名。

再按两次回车跳过设置密码(或者设置一段密码提高安全性)。


📋 步骤二:复制公钥并添加到 GitHub

复制公钥:

cat ~/.ssh/id_ed25519.pub

或者:

  • macOS: pbcopy < ~/.ssh/id_ed25519.pub
  • Windows Git Bash: clip < ~/.ssh/id_ed25519.pub

然后前往 GitHub:

  1. 登录 GitHub
  2. 点击右上角头像 → Settings(设置)
  3. 左边栏选择 SSH and GPG keys
  4. 点击 New SSH key
  5. Title 填写说明,比如 my-laptop
  6. Key 内容粘贴你刚复制的 id_ed25519.pub 内容
  7. 保存

⚙️ 步骤三:启动 ssh-agent 并添加私钥(首次使用需要)

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

如果你用的是自定义名称,比如 ~/.ssh/github_id_ed25519,那这里也要对应修改路径。


🧭 步骤四:配置 Git 使用 SSH URL

你可以用 HTTPS 或 SSH URL 来 clone 项目,SSH 是这样的格式:

git@github.com:username/repo.git

比如:

git clone git@github.com:octocat/Hello-World.git

如果你已经是 HTTPS 克隆的,可以切换为 SSH:

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

查看当前远程地址:

git remote -v

✅ 步骤五:测试是否连接成功

执行:

ssh -T git@github.com

第一次连接时会提示:

The authenticity of host 'github.com (IP)' can't be established.
...
Are you sure you want to continue connecting (yes/no)?

输入 yes,然后你应该会看到:

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

这就说明 SSH 配置成功!


🚀 Bonus:多账户管理(可选)

如果你有多个 GitHub 账号,可以使用 ~/.ssh/config 文件做配置,例如:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519

多个账号可以配置多个别名 Host,比如 github-work.comgithub-personal.com


如果你告诉我你目前是哪个操作系统,我也可以为你生成一键脚本或图文说明!需要的话也可以帮你检查现有配置。

相关文章:

  • AI创业风向标:构建下一代「AI叙事创作平台」
  • 为什么在模型训练过程中,不同的张量(比如输入数据和模型参数)被放置在了不同的 GPU 设备上,而模型要求所有相关张量都在同一个设备上才能正确计算
  • AI日报 - 2025年4月10日
  • Django 生成PDF文件
  • 【无标题】linux打包utools为appimage
  • “Common::PluginInterface”: 无法实例化抽象类
  • 线程控制
  • Node.js EventEmitter 深入解析
  • 从零开始学Python游戏编程17-函数2
  • 手机静态ip地址怎么获取?方法与解析‌
  • ESModule和CommonJS在Node中的区别
  • windows上opencv编译cuda版本
  • java学习笔记14——网络编程
  • CesiumEarth卫星影像/电子地图等二维切片数据制作
  • AI重构知识生态:大模型时代的学习、创作与决策革新
  • 基于队列构建优先级抢占机制的LED灯框架设计与实现
  • 新闻发稿软文发布投稿选择媒体时几大注意
  • 企业使用文档加密系统的两个重要原因。
  • 【OSG学习笔记】Day 2: 场景图(Scene Graph)的核心概念
  • CUDA 工具链将全面原生支持 Python
  • 阿里巴巴的网站怎么做/二级域名网址查询
  • 网站seo推广的方法/广告网站
  • 深圳南园网站建设/百度免费推广登录入口
  • 永久免费网站/企业营销策略有哪些
  • 用vs做网站界面/semester是什么意思
  • 网站开发用什么字体一般/百度知道入口