告别每次输密码!手把手教你用Git Bash生成SSH密钥并绑定到GitHub和Sourcetree

张开发
2026/5/21 14:56:27 15 分钟阅读
告别每次输密码!手把手教你用Git Bash生成SSH密钥并绑定到GitHub和Sourcetree
彻底告别密码输入SSH密钥绑定GitHub与Sourcetree全流程指南每次推送代码都要输入密码这种重复性操作不仅降低效率还可能因密码泄露带来安全隐患。本文将带你用SSH密钥彻底解决这个问题从生成密钥到绑定GitHub和Sourcetree一次性搞定所有配置。1. 为什么选择SSH而非HTTPSGitHub支持HTTPS和SSH两种协议进行代码传输但两者的体验差异巨大HTTPS协议每次推送/拉取代码都需要输入用户名和密码容易因网络问题导致认证失败长期使用存在密码泄露风险SSH协议一次性配置后永久免密登录采用非对称加密安全性更高连接速度通常比HTTPS更快提示SSH采用公钥-私钥对进行认证公钥上传到GitHub服务器私钥保存在本地两者匹配才能建立连接。2. 生成SSH密钥对2.1 环境准备确保已安装Git for Windows包含Git Bash。右键点击桌面或文件夹空白处应能看到Git Bash Here选项。2.2 配置用户信息打开Git Bash首先设置全局用户信息与GitHub账号一致git config --global user.name 你的GitHub用户名 git config --global user.email 你的GitHub注册邮箱验证配置是否生效git config --global --list2.3 生成密钥对执行以下命令生成SSH密钥替换为你的GitHub邮箱ssh-keygen -t ed25519 -C your_emailexample.com参数说明-t ed25519使用更安全的EdDSA算法比传统RSA更高效安全-C添加注释通常用邮箱连续按三次回车确认密钥保存路径默认~/.ssh/id_ed25519设置空密码如需更高安全性可设置密码确认密码生成成功后~/.ssh目录下会出现两个文件id_ed25519私钥绝不可泄露id_ed25519.pub公钥需上传到GitHub3. 将公钥添加到GitHub3.1 复制公钥内容在Git Bash中执行cat ~/.ssh/id_ed25519.pub全选输出内容并复制从ssh-ed25519开头到邮箱结尾。3.2 GitHub配置登录GitHub → 点击头像 → Settings左侧菜单选择SSH and GPG keys点击New SSH key填写Title自定义标识如My Work PCKey type保持默认Key粘贴复制的公钥内容点击Add SSH key验证是否添加成功ssh -T gitgithub.com看到Hi username! Youve successfully authenticated...即表示成功。4. 在Sourcetree中配置SSH4.1 添加私钥到SSH代理打开Sourcetree菜单栏 → Tools → Options选择SSH Client选项卡点击Add按钮选择你的私钥文件id_ed25519确认添加4.2 克隆仓库使用SSH在GitHub仓库页面点击Code → SSH → 复制SSH地址在Sourcetree点击Clone粘贴SSH地址其他选项保持默认点击Clone不再需要输入密码4.3 转换现有HTTPS仓库为SSH对于已通过HTTPS克隆的仓库右键仓库 → 选择Repository Settings找到Remotes → 选择origin将URL从HTTPS格式改为SSH格式原HTTPShttps://github.com/username/repo.git新SSHgitgithub.com:username/repo.git点击OK保存5. 高级配置与问题排查5.1 多账号管理如果需要为不同GitHub账号配置不同密钥生成第二个密钥对指定不同文件名ssh-keygen -t ed25519 -C workemail.com -f ~/.ssh/id_work创建/修改~/.ssh/config文件# 个人账号 Host github.com-personal HostName github.com User git IdentityFile ~/.ssh/id_ed25519 # 工作账号 Host github.com-work HostName github.com User git IdentityFile ~/.ssh/id_work克隆仓库时使用对应Hostgit clone gitgithub.com-personal:username/repo.git5.2 常见问题解决问题1Permission denied (publickey)检查公钥是否完整添加到GitHub确认私钥已加载到SSH代理ssh-add -l问题2Sourcetree仍要求输入密码确认仓库remote URL是SSH格式检查Sourcetree使用的SSH客户端设置建议使用OpenSSH问题3密钥被拒绝尝试更新密钥权限chmod 600 ~/.ssh/id_ed25519 chmod 644 ~/.ssh/id_ed25519.pub6. 安全最佳实践私钥保护不要将私钥上传到任何云端或代码仓库建议设置密钥密码生成时不要直接回车定期轮换密钥每年至少更换一次密钥对GitHub后台可随时删除不再使用的公钥设备分离为每台设备生成独立密钥对离职或更换设备时及时撤销相关公钥审计日志定期检查GitHub的Security log中的SSH访问记录发现异常活动立即撤销对应密钥实际项目中我习惯为开发、测试和生产环境分别配置不同的密钥对并通过config文件管理多组配置。遇到团队协作时建议统一使用SSH协议并建立密钥管理规范。

更多文章