SSH密钥配置与GitHub仓库推送方法

SSH连接不仅更安全,而且在处理大文件或网络不稳定时表现更加可靠。配置完成后,可享受更快的推送速度,Git操作将变得更加顺畅高效。

1. 生成SSH密钥

检查现有SSH密钥

# 查看是否已存在SSH密钥
ls -al ~/.ssh

生成新的SSH密钥

生成ED25519密钥

# 生成ED25519密钥(推荐)
ssh-keygen -t ed25519 -C "3220102382@zju.edu.cn"

# 或者生成RSA密钥
ssh-keygen -t rsa -b 4096 -C "3220102382@zju.edu.cn"

生成过程中会提示:

  • 输入保存密钥的文件路径(Enter表示默认)
  • 设置密钥密码(可选,Enter表示无密码)

2. 启动SSH代理并添加密钥

启动SSH代理

打开Git Bash界面

# 启动SSH代理
eval "$(ssh-agent -s)"

输出类似:Agent pid 59566,每次启动SSH代理时都会分配一个不同的随机pid。

将SSH私钥添加到代理

# 默认路径添加密钥
ssh-add ~/.ssh/id_ed25519
  • 可能出现情况:找不到文件
    image

  • 检查SSH密钥文件位置

    # 查看.ssh目录中的所有文件
    ls -la ~/.ssh/
    
    # 或者查看所有可能的位置
    find /c/Users/13571 -name "id_*" -type f 2>/dev/null
    

    image

    添加后显示:
    image

验证密钥已添加

# 查看已添加的密钥
ssh-add -l

3. 将公钥添加到GitHub

查看并复制公钥内容

cat ~/.ssh/id_ed25519.pub

在GitHub中添加公钥

  • 登录GitHub,点击头像 → Settings**
  • 左侧菜单选择SSH and GPG keys
  • New SSH key

4. 测试SSH连接

# 测试连接到GitHub
ssh -T git@github.com

成功连接会显示:

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

5. 配置Git使用SSH

检查当前远程仓库URL

git remote -v

如果是HTTPS,切换为SSH

# 新建远程连接
git remote add origin git@github.com:warbler12/HA.git
# 修改远程仓库URL为SSH格式
git remote set-url origin git@github.com:username/repository.git

6. 拉取最新代码

首次拉取

# 获取远程更新
git fetch origin

# 拉取并合并远程更改
git pull origin main

# 如果出现"unrelated histories"错误,使用:
git pull origin main --allow-unrelated-histories

处理合并提交消息界面

image

操作 按键 说明
进入编辑 i 开始编辑消息
退出编辑 Esc 返回命令模式
保存退出 :wq + Enter 保存并退出
强制退出 :qa! + Enter 不保存强制退出

7. 提交和推送代码

添加和提交更改

# 添加所有更改文件
git add .

# 提交更改
git commit -m "描述你的更改"

推送到GitHub

# 首次推送,设置上游分支
git push -u origin main

# 后续推送
git push

处理推送问题

  • 如果推送被拒绝,先拉取最新代码,解决冲突后再次推送
  • 网络不稳定时使用进度显示
    git push --progress -v
    

常见问题解决

🔄 每次会话工作流程

# 1. 启动SSH代理
eval "$(ssh-agent -s)"

# 2. 添加SSH密钥
ssh-add ~/.ssh/id_rsa
# 或者
ssh-add ~/.ssh/id_ed25519

# 3. 验证连接
ssh -T git@github.com

# 4. 进行Git操作
git push origin main

网络连接问题

# 设置Git缓冲区大小
git config --global http.postBuffer 104857600

# 启用压缩
git config --global core.compression 9

权限问题

# 修复SSH密钥权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

连接测试

# 详细测试SSH连接
ssh -vT git@github.com
posted @ 2025-11-11 16:03  warbler12  阅读(6)  评论(0)    收藏  举报