【学习记录】github私人仓库创建和本地克隆

0 背景

本人学习git的时候想要在github上创建私人仓库并且克隆到本地时,出现了一系列问题,相反如果使用gitee,就没有问题。


1 使用SSH协议克隆

1.1 原理解释

SSH是一种使用加密算法的网络协议,基于TCP工作,默认端口是22。需要在本地生成公钥和私钥,并将公钥配置给github服务器,之后本地发送网络请求后利用本地私钥解密服务器发来的报文以确认身份。

1.2 添加公钥

1.2.1 采用Ed25519算法

bash 复制代码
ssh-keygen -t ed25519 -C "你的GitHub邮箱地址"

回车三下,表示默认地址存储、无密码、确认密码。此时会在本地生成公钥以及私钥文件。

Ubunto:

公钥路径(默认路径):

复制代码
~/.ssh/id_ed25519.pub

私钥路径(默认路径):

复制代码
~/.ssh/id_ed25519

Windows:

公钥路径(默认路径):

复制代码
C:\Users\username\.ssh\id_ed25519.pub

私钥路径(默认路径):

复制代码
C:\Users\username\.ssh\id_ed25519

1.2.2 采用RSA算法

bash 复制代码
ssh-keygen -t rsa

同样回车三下,就会在默认路径下生成用RSA算法生成的公钥私钥文件:

bash 复制代码
~/.ssh/id_rsa.pub # linux 公钥
~/.ssh/id_rsa # linux 私钥
C:\Users\username\.ssh\id_rsa.pub # Windows 公钥
C:\Users\username\.ssh\id_rsa # Windows 私钥

1.2.3 配置公钥

使用以上其中一种算法生成的公钥即可,虽然同时添加两种公钥并不会冲突。

Linux系统打印出.pub文件的内容并复制黏贴:

bash 复制代码
cat ~/.ssh/id_rsa.pub # RSA打印出公钥内容
cat ~/.ssh/id_ed25519.pub # Ed25519打印出公钥内容

Windows下根据路径用文本文档打开并复制黏贴。

然后:

  1. 登录 GitHub 账号,点击右上角头像 → 选择 Settings(设置)。

  2. 在左侧菜单中找到 SSH and GPG keys → 点击右上角 New SSH key(新建 SSH 密钥)。

  3. 填写密钥信息:

    • **Title:**自定义名称。
    • **Key:**粘贴刚才复制的公钥内容。
  4. 点击 Add SSH key(添加 SSH 密钥),若弹出密码验证,输入 GitHub 账号密码确认。

最后可以在命令行输入以下指令来验证是否配置成功:

bash 复制代码
ssh -T git@github.com

如果验证成功,会返回以下内容:

bash 复制代码
Hi '你的github姓名'! You've successfully authenticated, but GitHub does not provide shell access.

也可以在github的SSH and GPG keys界面查看,钥匙是绿色的表示被使用过。


1.3 可能遇到问题

完成公钥配置并验证后,发现传输文件时网速很慢,启动Steam++加速器,再次输入指令用于验证是否配置完成:

bash 复制代码
ssh -T git@github.com

如果返回以下内容:

表示加速器的中间代理服务器发送的服务器公钥与真正的github服务器的主机公钥内容不一致,系统怀疑服务器可能被篡改 ,要求使用以下指令发生从 known_hosts 中移除与 github.com 相关的旧主机密钥记录:

bash 复制代码
ssh-keygen -f '/home/lhl/.ssh/known_hosts' -R 'github.com'

然后验证ssh配置是否完成:

bash 复制代码
ssh -T git@github.com

输入yes:

然后被要求输入密码:

再尝试进行克隆:

bash 复制代码
git clone git@github.com:HenryLin-personal/remote-gitcode.git

发现还是被要求输入密码:

原因:加速器篡改/etc/hosts,github.com被错误解析到 127.0.0.1(本地回环地址),导致 SSH 连接 "假的 GitHub 主机",进而密钥认证完全失效,被迫 fallback 到已禁用的密码认证。

解决:

  1. 对127.0.0.1 github.com加注释
bash 复制代码
vim /etc/hosts
  1. 然后清除之前错误解析导致 ~/.ssh/known_hosts 中保存了 "假 GitHub" 的指纹:
bash 复制代码
ssh-keygen -R github.com
  1. 然后重新验证ssh连接:
bash 复制代码
ssh -T git@github.com

验证成功:

bash 复制代码
Hi HenryLin-personal! You've successfully authenticated, but GitHub does not provide shell access.

**注意:**如果虚拟机出现任何问题需要快照恢复时,需要重新配置公钥,因为~/.ssh下的公钥私钥文件都可能会丢失!


2 使用HTTPS协议克隆

2.1 注意事项

当使用以下指令进行克隆时,采用HTTPS协议进行数据传输:

bash 复制代码
git clone https://github.com/HenryLin-personal/remote-gitcode.git

Username查看自己仓库路径下的姓名,比如:

Password方面,从 2021 年 8 月开始,GitHub 不再支持直接使用账号密码通过 HTTPS 进行 Git 操作(如 git clonegit push 等),必须改用 个人访问令牌(Personal Access Token,PAT)。

2.2 令牌创建

  1. 单击右上角头像,下拉找到Settings设置选项

  2. 左边菜单栏下拉找到Developer settings

  1. 点击personal access tokens,发现有两种令牌可供选择,创建其中一种即可,两种都创建也不会冲突

fine-grained tokens:关键是Repository access(仓库的权限)选择Only select repositories,选择需要访问的仓库。


然后再Permissions下Add Permissions中勾选Cotents,表示对文本的权限,在右边勾选Read and write即可。

第一次创建完令牌后,允许查看一次,后续需要自行保存或重新生成:

tokens(classic):关键是勾选repo(repository)即可,表示拥有对仓库操作的全部权限。


2.3 可能遇到问题

加速器启动后,发生证书安装问题:

解决:配置git的证书

bash 复制代码
git config --global http.sslCAInfo ~/.local/share/Steam++/Plugins/Accelerator/SteamTools.Certificate.cer
相关推荐
wydxry4 小时前
Linux 系统上配置 GitHub 账号并克隆私有仓库
linux·github
止观止4 小时前
GitHub Classroom:编程教育的高效协作方案
github
袋鱼不重4 小时前
Gitee 与 GitHub 仓库同步:从手动操作到自动化部署
前端·github
Coovally AI模型快速验证5 小时前
轻量级注意力模型HOTSPOT-YOLO:无人机光伏热异常检测新SOTA,mAP高达90.8%
人工智能·学习·yolo·计算机视觉·目标跟踪·无人机
茯苓gao6 小时前
变频器实习DAY42 VF与IF电机启动方式
笔记·嵌入式硬件·学习
百锦再6 小时前
每天两小时学习three.js
开发语言·javascript·学习·3d·three·2d·gbl
FutureUniant6 小时前
GitHub每日最火火火项目(9.3)
人工智能·计算机视觉·ai·github·音视频
逛逛GitHub6 小时前
推荐 7 个最近 火火火火 的开源项目。
github
龚子亦6 小时前
【Unity开发】热更新学习——AssetBundle
学习·unity·游戏引擎