在使用Git进行版本控制时,我们常常需要和远程仓库(比如GitHub或GitLab)进行交互,比如克隆项目、推送代码或者拉取更新。每次操作都要输入账号密码显然很麻烦,而SSH密钥就是解决这个问题的“安全钥匙”,让我们无需重复输入密码就能和远程仓库建立信任连接。
一、为什么用SSH密钥?¶
SSH密钥本质是一对加密的“钥匙”:
- 私钥:存放在本地电脑,绝对保密,用来证明你的身份。
- 公钥:需要提交到远程仓库(如GitHub),远程仓库通过公钥验证私钥的合法性。
用SSH密钥连接远程仓库的好处:
- 无需手动输入密码,操作更便捷。
- 比密码验证更安全,公钥加密的方式降低了身份被盗的风险。
二、生成SSH密钥对¶
首先,我们需要在本地电脑生成公私钥对。
1. 打开终端/命令行工具¶
- Windows:使用Git Bash(安装Git时会自带)。
- macOS/Linux:直接打开“终端”。
2. 生成密钥¶
在命令行中执行以下命令,生成一个名为id_ed25519的SSH密钥(当前推荐使用Ed25519算法,安全性高且生成快):
ssh-keygen -t ed25519 -C "你的邮箱@example.com"
- 命令解释:
-t ed25519:指定密钥类型为Ed25519。-C "你的邮箱@example.com":添加注释(通常填你的GitHub/GitLab注册邮箱,方便区分不同账号)。
执行后会提示你选择密钥保存路径(直接回车使用默认路径即可:/c/Users/你的用户名/.ssh/id_ed25519),也可以输入自定义路径。
3. 设置密码(可选)¶
系统可能会提示你输入“Passphrase”(密码短语),用于加密私钥。如果是个人电脑且常用,建议留空(直接回车),否则每次使用Git操作时都需要输入密码。如果担心安全,可以设置一个简单的密码。
4. 查看公钥内容¶
生成成功后,公钥文件是id_ed25519.pub,需要将其中的内容复制到远程仓库(GitHub/GitLab)。
- Windows/macOS/Linux:执行以下命令,直接打印公钥内容:
cat ~/.ssh/id_ed25519.pub
或者用文本编辑器(如记事本、VS Code)打开C:\Users\你的用户名\.ssh\id_ed25519.pub(Windows)或~/.ssh/id_ed25519.pub(macOS/Linux),复制全部内容。
三、将公钥添加到SSH-Agent(让私钥自动生效)¶
为了让系统自动使用私钥连接远程仓库,需要将私钥添加到SSH-Agent(管理私钥的进程)。
1. 启动SSH-Agent¶
- macOS/Linux:
eval "$(ssh-agent -s)" # 启动SSH-Agent
- Windows(Git Bash):通常会自动启动,可直接执行下一步。
2. 添加私钥到Agent¶
执行以下命令,将私钥id_ed25519添加到Agent:
ssh-add ~/.ssh/id_ed25519
- 如果设置了Passphrase,这里会提示你输入密码。
四、将公钥添加到远程平台(GitHub/GitLab)¶
现在需要把公钥复制到远程仓库,告诉它们“这把钥匙我可以信任”。以下是GitHub和GitLab的具体步骤:
1. 以GitHub为例¶
- 打开GitHub官网,登录后点击右上角头像 → 选择“Settings”。
- 在左侧菜单找到“SSH and GPG keys” → 点击“New SSH key”。
- Title:填写一个标识(如“我的Windows电脑”或“MacBook Pro”,方便区分不同设备)。
- Key:粘贴刚才复制的公钥内容(
id_ed25519.pub里的内容)。 - 点击“Add SSH key”完成添加。
2. GitLab类似操作¶
- 打开GitLab官网,登录后点击右上角头像 → “Settings” → “SSH Keys”。
- Title:填写标识(如“工作电脑”)。
- Key:粘贴公钥内容。
- 点击“Add Key”完成添加。
五、测试连接是否成功¶
配置完成后,用以下命令测试SSH连接是否正常:
ssh -T git@github.com # GitHub
# 或
ssh -T git@gitlab.com # GitLab
- 如果成功:会返回类似“Hi 用户名! You’ve successfully authenticated…”的欢迎信息。
- 如果失败:检查公钥是否正确复制到远程平台,或是否输入了正确的邮箱/账号。
六、常见问题解决¶
- 提示“Permission denied”:可能是公钥未添加到远程平台,重新检查公钥内容和平台配置。
- 找不到.ssh目录:生成密钥时路径错误,默认路径通常是用户目录下的
.ssh文件夹,直接在文件管理器中输入~/.ssh即可查看。 - 私钥被拒绝访问:检查Agent是否已启动并添加私钥(执行
ssh-add -l可查看已添加的私钥列表)。
现在,你已经完成了SSH密钥的配置,以后克隆、推送代码时就不用再输入密码了!如果遇到其他问题,随时查看远程平台的官方文档或Git命令行报错信息,排查问题会更高效哦。