Git CLI 生成 SSH Key:新手入门指南 – wiki基地


Git CLI 生成 SSH Key:新手入门指南

在使用 Git 进行版本控制时,你可能会遇到两种主要的认证方式:HTTPS 和 SSH。虽然 HTTPS 配置简单,但每次操作都需要输入用户名和密码。而 SSH(Secure Shell)密钥则提供了一种更安全、更便捷的认证方式,一旦配置完成,你就可以免密码地与远程 Git 仓库进行交互。

本指南将带你一步步使用 Git 命令行工具生成 SSH 密钥,并将其配置到你的 Git 托管服务(如 GitHub、GitLab、Bitbucket)。

为什么需要 SSH Key?

  1. 安全性:SSH 密钥对由一个私钥和一个公钥组成。私钥保存在你的本地计算机上,公钥则上传到 Git 托管服务。当你的计算机尝试连接 Git 仓库时,它会使用私钥进行加密签名,Git 托管服务则使用公钥来验证你的身份。这种机制比简单的用户名/密码更加安全,因为它避免了密码在网络传输中被截获的风险。
  2. 便捷性:一旦设置好 SSH 密钥,你就可以免去每次 Git 操作(如 git pushgit pull)时输入用户名和密码的麻烦,大大提高工作效率。
  3. 自动化:对于自动化脚本或 CI/CD 流水线,SSH 密钥是实现无人工干预安全访问仓库的理想选择。

前提条件

在开始之前,请确保你的系统上已经安装了 Git。如果你还没有安装,可以访问 Git 官方网站 (https://git-scm.com/downloads) 下载并安装。

第一步:检查现有 SSH Key

在生成新的 SSH Key 之前,最好检查一下你的计算机上是否已经存在 SSH 密钥。

打开你的终端或 Git Bash(在 Windows 上),输入以下命令:

bash
ls -al ~/.ssh

如果输出中包含 id_rsa.pubid_ecdsa.pubid_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]":为你的密钥添加一个注释,通常是你的邮箱地址,这有助于识别不同的密钥。请将其替换为你的实际邮箱地址。

执行命令后,系统会提示你:

  1. Enter a file in which to save the key (~/.ssh/id_ed25519):
    这是密钥存储的路径和文件名。默认情况下,它会保存在 ~/.ssh/id_ed25519(Ed25519 类型)或 ~/.ssh/id_rsa(RSA 类型)。直接按 Enter 键接受默认路径即可。如果你有多个密钥,可以为它们指定不同的名称,例如 ~/.ssh/github_ed25519

  2. 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 是一个在后台运行的程序,它会缓存你的私钥密码,这样你就不必每次连接时都输入密码。

  1. 启动 ssh-agent (如果尚未运行):

    bash
    eval "$(ssh-agent -s)"

    你可能已经看到 Agent pid <PID> 的输出。

  2. 将你的 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 上,你可以使用 pbcopyxclip 命令直接复制到剪贴板:

“`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-ed25519ssh-rsa 开始,到你的邮箱地址结束)。

第五步:将公钥添加到 Git 托管服务

接下来,你需要登录你的 Git 托管服务(GitHub、GitLab 或 Bitbucket),并将复制的公钥粘贴到你的账户设置中。

以 GitHub 为例:

  1. 登录你的 GitHub 账户。
  2. 点击右上角的头像,选择 Settings(设置)。
  3. 在左侧导航栏中,点击 SSH and GPG keys
  4. 点击 New SSH keyAdd SSH key 按钮。
  5. 在 “Title” 字段中,为你的密钥起一个有意义的名称(例如 “My Laptop” 或 “Work PC”),以便识别。
  6. 在 “Key” 字段中,粘贴你刚刚复制的公钥内容。
  7. 点击 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!

滚动至顶部