文章目录
- [前情提要:GitHub/Gitee 的 HTTPS、SSH 与公开、私有仓库](#前情提要:GitHub/Gitee 的 HTTPS、SSH 与公开、私有仓库)
-
- [1. 创建公开仓库 test1](#1. 创建公开仓库 test1)
-
- [1.1 HTTPS 方式](#1.1 HTTPS 方式)
- [1.2 SSH 方式](#1.2 SSH 方式)
- [2. 公开仓库与私有仓库的区别](#2. 公开仓库与私有仓库的区别)
- [3. 为什么 Git 操作仍然要求输入密码?](#3. 为什么 Git 操作仍然要求输入密码?)
- [4. HTTPS 访问令牌(Token)](#4. HTTPS 访问令牌(Token))
前情提要:GitHub/Gitee 的 HTTPS、SSH 与公开、私有仓库
本文通过公开仓库和私有仓库,演示 HTTPS 与 SSH 两种 Git 远程连接方式。
1. 创建公开仓库 test1
在 GitHub 上创建仓库 test1,设置为公开。
1.1 HTTPS 方式
bash
git clone https://github.com/用户名/test1.git
公开仓库通常无需登录即可克隆。HTTPS 方式不需要配置 SSH 密钥。
1.2 SSH 方式
首先检查当前用户主目录下的 .ssh 目录:
bash
ls -la ~/.ssh/
如果没有可用的密钥对,可以生成密钥。新环境推荐使用 Ed25519,也可以使用 RSA:
bash
ssh-keygen -t ed25519 -C "你的邮箱"
# 或者
ssh-keygen -t rsa -b 4096 -C "你的邮箱"
生成的私钥和公钥通常分别为 id_ed25519、id_ed25519.pub,或者 id_rsa、id_rsa.pub。将公钥文件的完整内容复制到 GitHub 的 Settings → SSH and GPG keys → New SSH key 中并保存,私钥必须保留在本地,不得泄露。
使用 SSH 地址克隆:
bash
git clone git@github.com:用户名/test1.git
配置正确后,通常无需输入 GitHub 账号密码。如果提示输入私钥的 passphrase,则输入创建密钥时设置的密码短语。
2. 公开仓库与私有仓库的区别
公开仓库通常允许任何人通过 HTTPS 直接克隆和拉取代码;私有仓库则要求用户通过身份认证,并具有相应的访问权限。无论仓库公开还是私有,推送代码都需要相应的写入权限并且输入密码。

3. 为什么 Git 操作仍然要求输入密码?
首先使用以下命令查看当前远程仓库地址:
bash
git remote -v
如果地址以 https://github.com/ 开头,说明使用 HTTPS;如果以 git@github.com: 开头,说明使用 SSH。
- HTTPS 克隆公开仓库: 通常不需要认证。如果仍然要求输入密码,应检查仓库地址、凭据缓存等配置。
- HTTPS 推送代码: 需要身份认证。
GitHub 不再支持使用普通账号登录密码进行 Git 操作,应使用 Personal Access Token(个人访问令牌)代替密码。 - SSH 克隆或推送: 需要正确配置 SSH 密钥;推送还要求具有仓库写入权限。私钥设置了密码短语时,仍可能要求输入该密码短语。ssh也是令牌
如果希望将 HTTPS 切换为 SSH,可以执行:
bash
git remote set-url origin git@github.com:用户名/test1.git
其中,用户名和仓库名必须替换为实际值。
4. HTTPS 访问令牌(Token)
如果继续使用 HTTPS,可以进入 GitHub 的 Settings → Developer settings → Personal access tokens 创建令牌。通常优先选择 Fine-grained tokens(精细化令牌) ,只授权需要操作的仓库,并将 Contents 权限设置为 Read and write。

执行git push时,用户名输入 GitHub 用户名,密码提示处输入 Token,而不是账号登录密码。Token 应妥善保管,不要泄露。
总结: HTTPS 通过访问令牌等凭据进行身份认证,SSH 通过密钥进行身份认证;公开仓库通常可以匿名读取,但推送代码仍需要写入权限。配置时应先通过 git remote -v 确认当前使用的连接方式,再选择对应的认证方案。