Git SSH:一步步配置教程 – wiki大全


Git SSH:一步步配置教程

Git 是目前最流行的版本控制系统之一,而 SSH (Secure Shell Protocol) 是一种加密的网络协议,用于在不安全的网络上安全地执行网络服务。当我们将 Git 与 SSH 结合使用时,可以实现更安全、更便捷的代码推送和拉取,免去了每次操作都需要输入用户名和密码的麻烦。

本教程将详细指导您如何一步步配置 Git SSH。

为什么使用 Git SSH?

  1. 安全性:SSH 使用加密技术,确保数据在传输过程中的安全性,防止敏感信息泄露。
  2. 便捷性:一旦配置完成,您无需在每次与远程仓库交互时都输入用户名和密码。
  3. 自动化:方便在自动化脚本或 CI/CD 流水线中使用。

前提条件

  • 已安装 Git。如果您尚未安装,请访问 Git 官网 下载并安装。
  • 拥有一个 Git 托管服务账户(如 GitHub, GitLab, Bitbucket 等)。

配置步骤

步骤 1: 检查现有的 SSH 密钥

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

打开您的终端(macOS/Linux)或 Git Bash(Windows),然后输入以下命令:

bash
ls -al ~/.ssh

如果输出中包含 id_rsa.pubid_ecdsa.pubid_ed25519.pub 等文件,则表示您可能已经有 SSH 密钥。您可以选择使用现有密钥,或按照下一步生成新密钥。

如果您决定使用现有密钥,请跳到 步骤 3。如果您想生成新密钥,或者没有发现任何密钥,请继续执行 步骤 2

步骤 2: 生成新的 SSH 密钥对

如果您没有 SSH 密钥,或者想生成一个新的密钥对,请执行以下命令。我们推荐使用 ed25519 算法,因为它比 RSA 更安全且速度更快。

bash
ssh-keygen -t ed25519 -C "[email protected]"

  • -t ed25519:指定生成密钥的类型为 ED25519。您也可以使用 rsa,例如 ssh-keygen -t rsa -b 4096 -C "[email protected]",其中 -b 4096 指定 RSA 密钥的位数为 4096 位,安全性更高。
  • -C "[email protected]":为您的密钥添加一个注释,通常是您的邮箱地址,这有助于您识别密钥。

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

Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/you/.ssh/id_ed25519):

您可以直接按回车键,将密钥保存在默认位置(推荐),或输入一个自定义路径。

接下来,系统会要求您输入一个密码(passphrase):

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

强烈建议您为密钥设置一个强密码。 这样即使私钥被泄露,没有密码攻击者也无法使用它。每次使用 SSH 密钥时,您将需要输入此密码,但可以通过 SSH 代理进行管理(见 步骤 3)。如果您不希望每次都输入密码,可以直接按回车留空,但安全性会降低。

生成成功后,您会看到类似以下输出:

Your identification has been saved in /Users/you/.ssh/id_ed25519
Your public key has been saved in /Users/you/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [email protected]
The key's randomart image is:
+--[ED25519 256]--+
| .+*= |
| . oBo. |
| + * |
| . o B |
| S + |
| . |
| |
| |
| |
+----[SHA256]-----+

这表示您的私钥 (id_ed25519) 和公钥 (id_ed25519.pub) 已成功生成并保存在 ~/.ssh/ 目录下。

步骤 3: 将您的 SSH 密钥添加到 SSH 代理

SSH 代理 (ssh-agent) 可以管理您的 SSH 密钥,并在需要时自动提供给 SSH 客户端,这样您就无需频繁输入密钥密码。

3.1 启动 ssh-agent (如果尚未运行)

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

如果代理已经在运行,此命令会输出其 PID。

3.2 将您的 SSH 私钥添加到 ssh-agent

bash
ssh-add ~/.ssh/id_ed25519

  • 如果您在 步骤 2 中为私钥设置了密码,系统会提示您输入密码。输入一次后,在当前会话中就不需要再次输入了。
  • 如果您使用了不同的密钥文件名(例如 id_rsa),请替换 id_ed25519 为您的文件名。

为了确保 ssh-agent 在系统重启后依然有效,您可能需要将 eval "$(ssh-agent -s)"ssh-add ~/.ssh/id_ed25519 添加到您的 shell 配置文件中(如 ~/.bashrc, ~/.zshrc, ~/.profile~/.bash_profile),但这超出了本教程的范围。对于 Windows 用户,Git Bash 通常会自动处理。

步骤 4: 将您的 SSH 公钥添加到您的 Git 托管服务

这是关键一步,您需要将生成好的公钥(以 .pub 结尾的文件内容)添加到您的 Git 托管服务(如 GitHub、GitLab 或 Bitbucket)账户中。

4.1 复制您的公钥内容

使用以下命令查看并复制您的公钥内容。请确保复制的是 .pub 文件的内容,而不是私钥。

bash
cat ~/.ssh/id_ed25519.pub

输出会是类似 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [email protected] 的长字符串。请完整复制这个字符串。

4.2 将公钥添加到 Git 托管服务

  • GitHub:

    1. 登录您的 GitHub 账户。
    2. 点击右上角的头像,选择 Settings (设置)。
    3. 在左侧导航栏选择 SSH and GPG keys
    4. 点击 New SSH keyAdd SSH key
    5. Title 字段中为您的密钥取一个易于识别的名称(例如 “My Laptop”)。
    6. 将您复制的公钥内容粘贴到 Key 字段中。
    7. 点击 Add SSH key
    8. 系统可能会要求您再次输入 GitHub 密码进行确认。
  • GitLab:

    1. 登录您的 GitLab 账户。
    2. 点击右上角的头像,选择 Preferences (偏好设置)。
    3. 在左侧导航栏选择 SSH Keys
    4. Key 字段中粘贴您复制的公钥内容。
    5. Title 字段中为您的密钥取一个易于识别的名称。
    6. 可以选择设置 Expires At (过期日期)。
    7. 点击 Add key
  • Bitbucket:

    1. 登录您的 Bitbucket 账户。
    2. 点击右上角的头像,选择 Personal settings (个人设置)。
    3. 在左侧导航栏 Security 下选择 SSH keys
    4. 点击 Add key
    5. Label 字段中为您的密钥取一个易于识别的名称。
    6. 将您复制的公钥内容粘贴到 Key 字段中。
    7. 点击 Add key

步骤 5: 测试您的 SSH 连接

在完成了以上步骤后,是时候测试您的 SSH 连接是否成功了。

对于 GitHub,您可以使用以下命令:

bash
ssh -T [email protected]

  • 如果您看到一条类似 Hi username! You've successfully authenticated, but GitHub does not provide shell access. 的消息,这意味着您的 SSH 连接已成功建立!
  • 如果您在 步骤 2 中为密钥设置了密码,系统会要求您输入该密码。
  • 如果提示 Are you sure you want to continue connecting (yes/no/[fingerprint])?,请输入 yes 并按回车键。

对于 GitLab 或 Bitbucket,请将 [email protected] 替换为相应的 SSH 地址,例如:

如果您遇到问题,请检查:
* 公钥是否正确添加到 Git 托管服务。
* ~/.ssh/id_ed25519 (或您使用的私钥文件) 是否具有正确的权限(通常只有所有者可读写)。
* SSH 代理是否正在运行,并且您的私钥已添加进去。

使用 SSH 克隆仓库

现在,您可以使用 SSH URL 来克隆仓库了。在您的 Git 托管服务上,找到您想要克隆的仓库,通常会有一个 “Code” 或 “Clone” 按钮,其中会提供 SSH URL。它通常以 git@ 开头。

例如,对于 GitHub:

bash
git clone [email protected]:your_username/your_repository.git

之后,您就可以像往常一样进行 git pushgit pull 等操作,而无需输入密码了。

总结

通过以上步骤,您已经成功配置了 Git SSH。这不仅提升了您与远程仓库交互的安全性,也大大提高了开发效率。享受便捷的 Git 工作流吧!


滚动至顶部