Git CLI 生成 SSH Key:新手入门指南
在使用 Git 进行版本控制时,你可能会遇到两种主要的认证方式:HTTPS 和 SSH。虽然 HTTPS 配置简单,但每次操作都需要输入用户名和密码。而 SSH(Secure Shell)密钥则提供了一种更安全、更便捷的认证方式,一旦配置完成,你就可以免密码地与远程 Git 仓库进行交互。
本指南将带你一步步使用 Git 命令行工具生成 SSH 密钥,并将其配置到你的 Git 托管服务(如 GitHub、GitLab、Bitbucket)。
为什么需要 SSH Key?
- 安全性:SSH 密钥对由一个私钥和一个公钥组成。私钥保存在你的本地计算机上,公钥则上传到 Git 托管服务。当你的计算机尝试连接 Git 仓库时,它会使用私钥进行加密签名,Git 托管服务则使用公钥来验证你的身份。这种机制比简单的用户名/密码更加安全,因为它避免了密码在网络传输中被截获的风险。
- 便捷性:一旦设置好 SSH 密钥,你就可以免去每次 Git 操作(如
git push、git pull)时输入用户名和密码的麻烦,大大提高工作效率。 - 自动化:对于自动化脚本或 CI/CD 流水线,SSH 密钥是实现无人工干预安全访问仓库的理想选择。
前提条件
在开始之前,请确保你的系统上已经安装了 Git。如果你还没有安装,可以访问 Git 官方网站 (https://git-scm.com/downloads) 下载并安装。
第一步:检查现有 SSH Key
在生成新的 SSH Key 之前,最好检查一下你的计算机上是否已经存在 SSH 密钥。
打开你的终端或 Git Bash(在 Windows 上),输入以下命令:
bash
ls -al ~/.ssh
如果输出中包含 id_rsa.pub、id_ecdsa.pub 或 id_ed25519.pub 等文件,说明你可能已经拥有 SSH Key。你可以选择使用现有的密钥,或者按照下面的步骤生成一个新的密钥。
建议:如果你是第一次设置,或者不确定现有密钥的用途,生成一个新的密钥是个不错的选择。
第二步:生成新的 SSH Key
使用 ssh-keygen 命令来生成 SSH 密钥对。
bash
ssh-keygen -t ed25519 -C "[email protected]"
-t ed25519:指定密钥类型为 Ed25519。Ed25519 是一种现代、安全且性能良好的加密算法,推荐使用。你也可以使用-t rsa来生成 RSA 密钥,但请确保使用-b 4096指定足够长的密钥长度(例如ssh-keygen -t rsa -b 4096 -C "[email protected]")。-C "[email protected]":为你的密钥添加一个注释,通常是你的邮箱地址,这有助于识别不同的密钥。请将其替换为你的实际邮箱地址。
执行命令后,系统会提示你:
-
Enter a file in which to save the key (~/.ssh/id_ed25519):
这是密钥存储的路径和文件名。默认情况下,它会保存在~/.ssh/id_ed25519(Ed25519 类型)或~/.ssh/id_rsa(RSA 类型)。直接按 Enter 键接受默认路径即可。如果你有多个密钥,可以为它们指定不同的名称,例如~/.ssh/github_ed25519。 -
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
你可以为你的私钥设置一个密码(passphrase)。设置密码可以为你的私钥提供额外的安全层,即使私钥被盗,没有密码也无法使用。但是,这意味着每次使用私钥时都需要输入密码。
建议: 为了方便,在个人开发环境中,许多人选择不设置密码(直接按 Enter 键)。但在企业环境或共享环境中,强烈建议设置一个强密码。
密钥生成成功后,你将看到类似以下的信息:
Your identification has been saved in /home/youruser/.ssh/id_ed25519
Your public key has been saved in /home/youruser/.ssh/id_ed25519.pub
The key fingerprint is: SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [email protected]
The key's randomart image is:
+--[ED25519 256]--+
| .o+=. |
| . o.=. |
| . +.. |
| . + + |
| . . S = |
| . o + . |
| . o . |
| . . |
| |
+----[SHA256]-----+
这表示你的私钥(id_ed25519)和公钥(id_ed25519.pub)已经成功生成并保存在 ~/.ssh/ 目录下。
第三步:将 SSH Key 添加到 SSH Agent
SSH Agent 是一个在后台运行的程序,它会缓存你的私钥密码,这样你就不必每次连接时都输入密码。
-
启动 ssh-agent (如果尚未运行):
bash
eval "$(ssh-agent -s)"你可能已经看到
Agent pid <PID>的输出。 -
将你的 SSH 私钥添加到 ssh-agent:
bash
ssh-add ~/.ssh/id_ed25519如果你在生成密钥时设置了密码,系统会提示你输入该密码。如果你的密钥文件不是默认名称(例如
github_ed25519),请替换为你的文件名:ssh-add ~/.ssh/github_ed25519。注意:在 macOS 上,你可能需要修改
~/.ssh/config文件来让系统记住密码。
创建或编辑~/.ssh/config文件,并添加以下内容:Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519 # 替换为你的私钥路径
第四步:复制公钥内容
现在你需要将生成的公钥内容复制到你的 Git 托管服务。公钥文件以 .pub 结尾。
在 macOS 或 Linux 上,你可以使用 pbcopy 或 xclip 命令直接复制到剪贴板:
“`bash
pbcopy < ~/.ssh/id_ed25519.pub
或者在某些Linux发行版上:
xclip -sel clip < ~/.ssh/id_ed25519.pub
“`
在 Windows 上(使用 Git Bash),你可以使用 clip 命令:
bash
clip < ~/.ssh/id_ed25519.pub
如果你无法使用上述命令,也可以直接打开公钥文件并手动复制其所有内容:
bash
cat ~/.ssh/id_ed25519.pub
然后,全选并复制终端中显示的所有文本(从 ssh-ed25519 或 ssh-rsa 开始,到你的邮箱地址结束)。
第五步:将公钥添加到 Git 托管服务
接下来,你需要登录你的 Git 托管服务(GitHub、GitLab 或 Bitbucket),并将复制的公钥粘贴到你的账户设置中。
以 GitHub 为例:
- 登录你的 GitHub 账户。
- 点击右上角的头像,选择 Settings(设置)。
- 在左侧导航栏中,点击 SSH and GPG keys。
- 点击 New SSH key 或 Add SSH key 按钮。
- 在 “Title” 字段中,为你的密钥起一个有意义的名称(例如 “My Laptop” 或 “Work PC”),以便识别。
- 在 “Key” 字段中,粘贴你刚刚复制的公钥内容。
- 点击 Add SSH key。如果提示,输入你的 GitHub 密码确认。
对于 GitLab 和 Bitbucket:
- GitLab:登录 -> 用户设置 -> SSH 密钥。
- Bitbucket:登录 -> Bitbucket settings -> SSH keys。
操作步骤类似,都是找到 SSH 密钥管理页面,然后添加新的密钥。
第六步:测试 SSH 连接
公钥添加完成后,你可以测试一下 SSH 连接是否成功。
“`bash
ssh -T [email protected]
对于GitLab: ssh -T [email protected]
对于Bitbucket: ssh -T [email protected]
“`
- 如果这是你第一次连接到该服务,系统可能会提示你确认服务器的指纹。输入
yes并按 Enter 键。
如果一切设置正确,你会看到一条成功信息,例如:
Hi your-github-username! You've successfully authenticated, but GitHub does not provide shell access.
或者:
Welcome to GitLab, @your-gitlab-username!
这条信息表明你的 SSH 连接已经成功建立。现在你可以使用 SSH URL 来克隆或操作你的 Git 仓库了。
常用 Git SSH 命令
- 克隆仓库:
bash
git clone [email protected]:username/repository.git - 添加远程仓库:
bash
git remote add origin [email protected]:username/repository.git - 拉取/推送:
bash
git pull origin main
git push origin main
总结
通过遵循本指南,你已经成功生成了 SSH 密钥对,并将其配置到你的 Git 托管服务中。从现在开始,你的 Git 操作将更加安全和便捷。祝你编码愉快!
If you need any adjustments or further details, just let me know!