Git
Git 全局设置
git config --global user.name "flyinghigher1996"
git config --global user.email "m18680248091@163.com"
创建一个新仓库
git clone https://gitcode.com/flyinghigher1996/Test.git
cd Test
echo "# Test" >> README.md
git add README.md
git commit -m "add README"
git branch -m main
git push -u origin main
推送现有的文件
cd existing_folder
git init
git remote add origin https://gitcode.com/flyinghigher1996/Test.git
git add .
git commit -m "Initial commit"
git branch -m main
git push -u origin main
推送现有的 Git 仓库
cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitcode.com/flyinghigher1996/Test.git
git push -u origin --all
git push -u origin --tags
确认当前的远程仓库地址和名称
git remote -v
2. 更改远程仓库地址
改为 HTTPS 地址:git remote set-url origin https://github.com/yourname/your-new-repo.git
改为 SSH 地址(推荐,更安全):git remote set-url origin git@github.com:yourname/your-new-repo.git
🛠 步骤 1:生成 SSH RSA 密钥
打开 Git Bash (Windows) 或 Terminal (macOS/Linux),然后运行以下命令:
Bash 编辑
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa: 指定密钥类型为 RSA。
-b 4096: 指定密钥长度为 4096 位(比默认的 2048 位更安全)。
-C "your_email@example.com": 添加一个注释,通常是你的邮箱,用于标识这个密钥。
执行过程
提示你保存密钥文件:
Enter file in which to save the key (/c/Users/YourName/.ssh/id_rsa):
推荐:输入一个自定义文件名,例如 id_rsa_github,以避免覆盖默认的 id_rsa。
输入:id_rsa_github
设置密码 (Passphrase):
Text 编辑
Enter passphrase (empty for no passphrase):
你可以输入一个密码来加密你的私钥(推荐,更安全)。
如果不想每次使用都输密码,直接按回车留空。
确认密码:
Text
编辑
Enter same passphrase again:
再次输入密码或直接回车。
完成后,你会在 ~/.ssh/ 目录下看到两个文件:
id_rsa_github (你的私钥,绝对不要分享!)
id_rsa_github.pub (你的公钥,以 .pub 结尾,可以公开)
📄 步骤 2:查看并复制公钥内容
运行以下命令来显示你的公钥:
Bash编辑
cat ~/.ssh/id_rsa_github.pub
输出示例:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf...(超长的一串字符)...your_email@example.com
关键点:输出确实以 ssh-rsa 开头。
操作:全选并复制这整行输出(从 ssh-rsa 开始,到你的邮箱结束)。
💡 注意:是 .pub 文件,不是私钥文件!
⚙️ 步骤 3:将公钥添加到 GitHub
登录你的 GitHub 账户。
点击右上角头像 → Settings。
在左侧菜单选择 SSH and GPG keys。
点击 New SSH key 按钮。
填写信息:
Title: 给密钥起个名字,比如 My Laptop - RSA 4096。
Key type: 选择 Authentication Key。
Key: 将你在上一步复制的整行公钥内容粘贴到这里。
点击 Add SSH key。
🔎 步骤 4:测试 SSH 连接
在 Git Bash 或终端中运行:
Bash 编辑
ssh -T git@github.com
首次连接时,你会看到类似提示:
Text 编辑
The authenticity of host 'github.com (140.82.121.4)' can't be established.
RSA key fingerprint is SHA256:... 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 密钥已成功验证。
📌 重要提醒
保护私钥:id_rsa_github 这个文件是你的私钥,必须保密。不要上传到 GitHub 或发给任何人。
使用正确的密钥:如果你生成了多个密钥,需要在 ~/.ssh/config 文件中配置,告诉 Git 在访问 GitHub 时使用哪个密钥。
为什么推荐 ed25519:
ssh-keygen -t ed25519 -C "your_email@example.com" 生成的密钥以 ssh-ed25519 开头,更现代、更安全、更高效。
ssh-rsa 基于 SHA-1,在未来可能会被进一步限制。
示例配置文件 ~/.ssh/config
如果你有多个 SSH 密钥,创建此文件来管理:
Config
编辑
# GitHub - 使用 RSA 密钥
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github
IdentitiesOnly yes
这个错误:
git@github.com: Permission denied (publickey).
意思是:“权限被拒绝(公钥)”。
这说明你的电脑尝试用 SSH 连接 GitHub,但 GitHub 没有识别出你的公钥,导致登录失败。
🔍 常见原因
公钥没有添加到 GitHub:你生成了密钥,但没有把 .pub 文件的内容粘贴到 GitHub 的 SSH 设置中。
私钥文件权限不对:SSH 客户端认为私钥不安全,拒绝使用。
SSH agent 没有加载密钥:SSH agent 是一个后台程序,用来管理你的密钥。如果它没运行或没加载你的密钥,连接就会失败。
使用了错误的密钥或配置:你可能有多个密钥,但 SSH 没有选择正确的那个。
密钥生成后没有正确保存:虽然生成了,但路径或名字有误。
✅ 解决方法(逐步排查)
✅ 第一步:确认公钥已添加到 GitHub
登录 GitHub 网站。
进入 Settings → SSH and GPG keys。
查看 "SSH keys" 列表中是否有你添加的密钥(比如你起的名字 My Laptop)。
如果没有,请重新添加:
在 Git Bash 中运行:
Bash 编辑
cat ~/.ssh/id_rsa_github.pub
全选并复制输出的整行内容(必须是从 ssh-rsa 开始,到邮箱结束)。
在 GitHub 页面点击 "New SSH key",粘贴进去并保存。
⚠️ 注意:复制时不要遗漏任何字符,也不要多复制空格或换行。
✅ 第二步:检查私钥文件权限
SSH 要求私钥文件的权限必须是 600(仅所有者可读写)。
在 Git Bash 中运行:
Bash 编辑
chmod 600 ~/.ssh/id_rsa_github
如果文件名不同,请替换为你的实际私钥文件名。
✅ 第三步:启动 SSH agent 并添加密钥
SSH agent 需要运行,并且要把你的私钥加载进去。
在 Git Bash 中依次运行以下命令:
Bash 编辑
# 1. 确保 SSH agent 在运行
eval $(ssh-agent -s)
# 2. 将你的私钥添加到 SSH agent
ssh-add ~/.ssh/id_rsa_github
如果你设置了 passphrase(密码),这时会提示你输入一次。
成功输出示例:
Identity added: /c/Users/pengmingwu/.ssh/id_rsa_github (your_email@example.com)
✅ 第四步:测试连接
再次运行测试命令:
Bash 编辑
ssh -T git@github.com
如果一切正常,你会看到:
Text
编辑
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
✅ 第五步:(可选) 配置 ~/.ssh/config 文件
如果你有多个 SSH 密钥,建议创建配置文件,明确指定 GitHub 使用哪个密钥。
在 ~/.ssh/ 目录下创建 config 文件:
Bash编辑
# 打开或创建 config 文件
notepad ~/.ssh/config
添加以下内容:
Text 编辑
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github
IdentitiesOnly yes
保存文件。这会告诉 SSH,当连接 github.com 时,使用 id_rsa_github 这个私钥。
🧪 验证密钥是否被 agent 管理
运行:
Bash编辑
ssh-add -l
这会列出所有被 agent 管理的密钥。你应该能看到你的 id_rsa_github。
如果列表为空,说明 agent 没有加载密钥,需要重新 ssh-add。
📌 总结
你遇到的 Permission denied (publickey) 错误,最常见的原因是:
你生成了密钥,但忘了把公钥 (*.pub) 添加到 GitHub。
你没有用 ssh-add 把私钥添加到 SSH agent。
请务必执行:
cat ~/.ssh/id_rsa_github.pub → 复制 → 粘贴到 GitHub。
ssh-add ~/.ssh/id_rsa_github
做完这两步,再运行 ssh -T git@github.com,99% 的情况下就能成功了。
🛠️ 准备工作:生成SSH密钥对
首先需要确保你有SSH密钥对,推荐使用安全性更高的ed25519算法:
Bash复制
# 生成ed25519类型密钥(推荐)
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/github_signing_key
# 或兼容旧系统的RSA 4096位密钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/github_signing_key
执行后会生成两个文件:私钥github_signing_key和公钥github_signing_key.pub
建议设置密码(passphrase)增强安全性,连续按Enter可跳过
🔐 将公钥添加到GitHub(设置为签名密钥)
复制公钥内容:
Bash复制
# 复制公钥到剪贴板(macOS)
pbcopy < ~/.ssh/github_signing_key.pub
# Linux
xclip -sel clip < ~/.ssh/github_signing_key.pub
# Windows (Git Bash)
cat ~/.ssh/github_signing_key.pub | clip
在GitHub添加签名密钥:
访问 GitHub → 右上角头像 → Settings → SSH and GPG keys
点击 New SSH key
Title 填写描述(如"Work Laptop - Signing Key")
Key type 选择 Signing Key(关键步骤!)
Key 粘贴公钥内容,点击 Add SSH key
⚙️ 配置Git使用SSH密钥签名提交
设置Git全局签名配置:
Bash复制
# 指定使用SSH格式签名
git config --global gpg.format ssh
# 设置签名密钥(使用公钥路径)
git config --global user.signingkey ~/.ssh/github_signing_key.pub
# 启用自动签名所有提交(可选)
git config --global commit.gpgsign true
验证配置: 查看~/.gitconfig文件应包含以下内容:
Ini 复制
[gpg]
format = ssh
[user]
signingkey = /Users/yourname/.ssh/github_signing_key.pub
[commit]
gpgsign = true # 如启用自动签名
✅ 测试签名提交
创建测试提交:
Bash复制
git commit -S -m "Test signed commit with SSH key"
浙公网安备 33010602011771号