元素码农
基础
UML建模
数据结构
算法
设计模式
网络
TCP/IP协议
HTTPS安全机制
WebSocket实时通信
数据库
sqlite
postgresql
clickhouse
后端
rust
go
java
php
mysql
redis
mongodb
etcd
nats
zincsearch
前端
浏览器
javascript
typescript
vue3
react
游戏
unity
unreal
C++
C#
Lua
App
android
ios
flutter
react-native
安全
Web安全
测试
软件测试
自动化测试 - Playwright
人工智能
Python
langChain
langGraph
运维
linux
docker
工具
git
svn
🌞
🌙
目录
▶
概念理解
版本控制系统介绍
Git与其他VCS的区别
仓库、工作区与暂存区
▶
安装配置
各平台安装指南
初始配置与别名设置
SSH密钥管理
▶
常用命令
提交工作流(add/commit)
分支操作(branch/checkout)
合并与变基(merge/rebase)
远程仓库操作(remote/push/fetch)
▶
高级技巧
标签管理
子模块使用
钩子脚本开发
历史重写(reflog/reset)
▶
故障排除
常见错误解决方案
二分法调试(bisect)
恢复丢失的提交
发布时间:
2025-03-23 12:05
↑
☰
# SSH密钥管理 ## SSH密钥概述 SSH(Secure Shell)密钥是一种安全的身份验证方式,用于在Git操作中进行安全的远程仓库访问。使用SSH密钥可以避免每次操作远程仓库时都需要输入用户名和密码。 ## SSH密钥的工作原理 ### 1. 公钥和私钥 - 私钥:存储在本地计算机上的密钥文件 - 公钥:上传到Git服务器的密钥文件 - 两个密钥文件是配对的,共同完成身份验证 ### 2. 身份验证过程 1. 客户端发送公钥给服务器 2. 服务器使用公钥加密随机字符串 3. 客户端使用私钥解密 4. 验证成功后建立安全连接 ## SSH密钥生成 ### 1. 生成新的SSH密钥对 ```bash # 生成SSH密钥对 ssh-keygen -t ed25519 -C "your_email@example.com" # 如果你使用的是不支持Ed25519算法的旧系统,使用: ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` ### 2. 生成过程说明 1. 选择密钥存储位置(默认为~/.ssh/) 2. 设置密钥密码(可选) 3. 生成公钥和私钥文件 - id_ed25519 (私钥) - id_ed25519.pub (公钥) ## 配置SSH密钥 ### 1. 添加SSH密钥到SSH-Agent ```bash # 启动ssh-agent eval "$(ssh-agent -s)" # 添加私钥 ssh-add ~/.ssh/id_ed25519 ``` ### 2. 添加公钥到Git服务器 1. 复制公钥内容 ```bash # macOS cat ~/.ssh/id_ed25519.pub | pbcopy # Linux cat ~/.ssh/id_ed25519.pub | xclip -selection clipboard # Windows cat ~/.ssh/id_ed25519.pub | clip ``` 2. 在Git服务器添加公钥 - GitHub: Settings > SSH and GPG keys > New SSH key - GitLab: Settings > SSH Keys - Bitbucket: Settings > SSH Keys > Add key ## 使用SSH密钥 ### 1. 测试SSH连接 ```bash # 测试GitHub连接 ssh -T git@github.com # 测试GitLab连接 ssh -T git@gitlab.com # 测试Bitbucket连接 ssh -T git@bitbucket.org ``` ### 2. 使用SSH URL克隆仓库 ```bash # 使用SSH URL克隆仓库 git clone git@github.com:username/repository.git # 将HTTPS远程URL改为SSH git remote set-url origin git@github.com:username/repository.git ``` ## 多个SSH密钥管理 ### 1. 为不同服务生成不同密钥 ```bash # 生成GitHub用的密钥 ssh-keygen -t ed25519 -C "github@example.com" -f ~/.ssh/github_ed25519 # 生成GitLab用的密钥 ssh-keygen -t ed25519 -C "gitlab@example.com" -f ~/.ssh/gitlab_ed25519 ``` ### 2. 配置SSH配置文件 在~/.ssh/config文件中添加配置: ``` # GitHub Host github.com HostName github.com User git IdentityFile ~/.ssh/github_ed25519 # GitLab Host gitlab.com HostName gitlab.com User git IdentityFile ~/.ssh/gitlab_ed25519 ``` ## 安全最佳实践 ### 1. 私钥保护 - 设置适当的文件权限 ```bash chmod 600 ~/.ssh/id_ed25519 chmod 644 ~/.ssh/id_ed25519.pub ``` - 使用密钥密码 - 定期更换密钥 - 不共享私钥 ### 2. 公钥管理 - 及时删除不再使用的公钥 - 定期审查授权的公钥 - 使用有意义的密钥注释 ### 3. SSH-Agent使用 - 使用ssh-agent管理密钥 - 适时清理ssh-agent中的密钥 - 在需要时才添加密钥 ## 故障排除 ### 1. 常见问题 - 权限问题 - 密钥格式错误 - 连接超时 - 密钥未添加到ssh-agent ### 2. 诊断步骤 1. 检查SSH密钥权限 2. 验证密钥是否已添加到ssh-agent 3. 测试SSH连接 4. 检查服务器公钥配置 ### 3. 调试命令 ```bash # 使用详细输出模式测试连接 ssh -vT git@github.com # 检查ssh-agent中的密钥 ssh-add -l # 检查SSH配置 ssh -G github.com ``` ## 总结 SSH密钥是进行Git远程操作的安全可靠的认证方式。通过正确生成、配置和管理SSH密钥,可以既保证操作的安全性,又提高工作效率。建议遵循安全最佳实践,定期更新密钥,并保持良好的密钥管理习惯。