Git SSH Key 生成与配置详解 – wiki基地


Git SSH Key 生成与配置详解:告别密码,拥抱安全与便捷

在现代软件开发的协作流程中,Git 已经成为不可或缺的版本控制工具。无论是在本地管理代码,还是与远程仓库(如 GitHub、GitLab、Bitbucket 等)进行交互,Git 都提供了强大而灵活的功能。与远程仓库进行交互时,身份验证是核心环节。传统的 HTTPS 协议使用用户名和密码(或 Personal Access Token)进行验证,而 SSH 协议则依赖于 SSH Key 对。相比之下,使用 SSH Key 对 Git 进行身份验证更加安全、便捷,且无需重复输入密码。

本文将带你深入了解 Git SSH Key 的概念、生成过程、配置方法以及常见问题的解决,让你彻底告别繁琐的密码输入,享受 Git 带来的顺畅体验。

第一部分:理解 SSH Key 和为什么 Git 需要它

1. 什么是 SSH?

SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中安全地执行命令和传输数据。它提供了一种安全的、加密的通信通道,常用于远程登录服务器、执行远程命令以及文件传输。

2. 什么是 SSH Key?

SSH Key 是一对密钥:一个公钥(Public Key)和一个私钥(Private Key)。它们是基于非对称加密算法生成的一对相关联的字符串。

  • 私钥 (Private Key): 这是你的身份凭证的核心,必须严格保密,不能泄露给任何人。私钥就像你的房门钥匙。它通常存储在你的本地计算机上,比如 ~/.ssh/id_rsa~/.ssh/id_ed25519 文件。
  • 公钥 (Public Key): 这是与私钥配对的另一部分。公钥可以公开分享给任何需要验证你身份的服务或个人。公钥就像你家的地址,你可以告诉任何人,他们可以通过这个地址找到你家,但没有钥匙(私钥)他们进不了门。它通常存储在你的本地计算机的公钥文件中,比如 ~/.ssh/id_rsa.pub~/.ssh/id_ed25519.pub 文件。

SSH Key 的工作原理大致是这样的:当你尝试通过 SSH 连接到一个远程服务(如 Git 仓库托管平台)时,客户端(你的计算机)会使用你的私钥对一些数据进行签名。服务器端则使用与你的私钥配对的公钥来验证这个签名。如果签名有效,服务器就确认是你本人在尝试连接,从而允许你访问。这个过程是加密的,并且私钥永远不会通过网络传输。

3. 为什么 Git 使用 SSH Key?

Git 本身可以通过多种协议与远程仓库通信,包括 HTTPS 和 SSH。

  • HTTPS: 使用用户名和密码(或 Personal Access Token)进行身份验证。每次执行 git pushgit pull 等操作时,你可能都需要输入用户名和密码,虽然现代 Git 客户端可以通过凭证管理器缓存密码,但仍存在潜在的安全风险,且管理 Personal Access Token 也需要额外的步骤。
  • SSH: 使用 SSH Key 对进行身份验证。一旦配置完成,你无需再输入密码,即可与远程仓库进行安全、无缝的交互。这极大地提高了开发效率和安全性(私钥本身可以设置密码保护)。

使用 SSH Key 的优势:

  • 安全性: 相比于通过网络传输密码,SSH Key 的私钥永不离开本地,验证过程基于加密算法,更加安全。
  • 便捷性: 配置一次后,无需重复输入密码,极大地提升了工作效率。
  • 自动化友好: 更容易在脚本或自动化流程中使用,无需处理交互式的密码输入。

因此,对于频繁与远程 Git 仓库交互的开发者来说,使用 SSH Key 是强烈推荐的方式。

第二部分:生成 SSH Key 对

生成 SSH Key 对是使用 SSH 协议进行 Git 身份验证的第一步。我们将使用 ssh-keygen 工具来完成这个任务,这个工具在大多数类 Unix 系统(Linux, macOS)以及安装了 Git Bash 的 Windows 系统中都已经内置。

1. 打开终端或 Git Bash

  • Linux / macOS: 打开你的终端应用程序。
  • Windows: 打开 Git Bash(安装 Git 时会包含)。

2. 运行生成命令

在终端中输入以下命令来生成 SSH Key:

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

让我们解释一下这个命令的各个部分:

  • ssh-keygen: 这是用来生成、管理和转换认证密钥的工具。
  • -t ed25519: 指定要生成的密钥类型。ed25519 是一种现代、安全、高效的非对称加密算法,推荐优先使用。你也可以使用 rsa,但通常建议使用至少 2048 位甚至 4096 位的长度(ssh-keygen -t rsa -b 4096 -C "[email protected]")。如果你的 SSH 客户端版本较老,可能不支持 ed25519,这时可以退而求其次选择 RSA。
  • -C "[email protected]": 为生成的密钥对添加一个注释。这个注释通常是你的电子邮件地址或其他标识符,以便你知道这个密钥是为哪个账户或目的创建的。这对于管理多个密钥非常有用。请将其替换为你自己的电子邮件地址。

3. 响应 ssh-keygen 的提示

运行上述命令后,ssh-keygen 会引导你完成生成过程,通常会有以下几个提示:

  • Enter file in which to save the key (/Users/you/.ssh/id_ed25519):
    • 这个提示让你指定保存密钥对的文件路径。默认路径通常是用户主目录下的 .ssh 目录,文件名为 id_ed25519 (或 id_rsa 如果你选择了 RSA)。
    • 对于大多数用户来说,直接按回车键接受默认路径是最好的选择。如果你想为不同的目的创建多个密钥对,可以指定一个不同的文件名,例如 /Users/you/.ssh/id_gitlab_ed25519
    • 如果 .ssh 目录不存在,ssh-keygen 会自动创建它。
  • Enter passphrase (empty for no passphrase):
    • 这个提示让你输入一个密码短语(passphrase)来保护你的私钥。
    • 强烈建议设置一个密码短语。 即使你的私钥文件不慎泄露,没有密码短语,攻击者也无法使用它。设置密码短语会稍微降低便利性(每次使用私钥时可能需要输入密码),但显著提高了安全性。不过,你可以通过 SSH Agent 来管理密码短语,避免频繁输入。
    • 输入密码短语时,屏幕上不会显示你输入的字符。
    • 如果不想设置密码,直接按回车键即可(不推荐)。
  • Enter same passphrase again:
    • 需要再次输入密码短语以确认。

完成上述步骤后,ssh-keygen 会生成你的密钥对,并显示密钥的指纹(fingerprint)以及随机图像(randomart image)。

示例输出可能类似这样:

Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/you/.ssh/id_ed25519): [按回车键]
Enter passphrase (empty for no passphrase): [输入你的密码短语]
Enter same passphrase again: [再次输入你的密码短语]
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:..................... [email protected]
The key's randomart image is:
+--[ED25519 256]--+
| .+*Bo |
| . +.=+ |
| . . E.+ |
| . o = +. |
| o S.= |
| + = . |
| + o |
| . + |
| ... |
+----[SHA256]-----+

4. 检查生成的密钥文件

生成完成后,你可以在指定目录下找到两个新文件:

  • id_ed25519 (或 id_rsa): 这是你的私钥文件。确保它的权限设置正确(通常只有所有者有读写权限)。
  • id_ed25519.pub (或 id_rsa.pub): 这是你的公钥文件。这个文件的内容需要添加到你的 Git 仓库托管平台。

你可以使用以下命令查看公钥文件的内容:

bash
cat ~/.ssh/id_ed25519.pub

(请将 id_ed25519.pub 替换为你实际生成的公钥文件名)

输出的内容就是你的公钥字符串,它通常以 ssh-ed25519ssh-rsa 开头,以你的注释(例如邮箱地址)结尾。例如:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOzD+yC0u2n5hB1fD9q5Q7p1wR5zY8sZ8vM8+c1Qz9L5 [email protected]

第三部分:将公钥添加到 Git 仓库托管平台

生成了公钥后,你需要将它添加到你使用的 Git 仓库托管平台(如 GitHub、GitLab、Bitbucket 等)的账户设置中。这样,当你通过 SSH 连接到这些平台时,它们就能使用你提供的公钥来验证你的身份。

虽然不同平台的具体操作界面略有差异,但核心步骤是相同的:找到 SSH Key 设置页面 -> 添加新的 SSH Key -> 复制并粘贴你的公钥内容 -> 保存

以下以 GitHub 为例进行说明:

  1. 复制公钥内容: 使用 cat ~/.ssh/id_ed25519.pub 命令(或对应的公钥文件名)显示你的公钥内容,然后复制整个字符串。确保不要遗漏任何字符,包括开头的 ssh-ed25519ssh-rsa 以及结尾的注释。
    • Windows (Git Bash): 可以通过右键菜单或快捷键复制。
    • macOS: 可以使用 pbcopy < ~/.ssh/id_ed25519.pub 命令将公钥内容直接复制到剪贴板。
    • Linux: 不同的发行版和桌面环境有不同的复制方法,常见的有选中即复制或使用 xclip 等工具。
  2. 登录你的 Git 托管平台账户: 打开浏览器,登录到你的 GitHub、GitLab 或 Bitbucket 等账户。
  3. 导航到 SSH Key 设置:
    • GitHub: 点击右上角的用户头像 -> Settings -> SSH and GPG keys。
    • GitLab: 点击右上角的用户头像 -> Preferences -> SSH Keys。
    • Bitbucket: 点击右上角的用户头像 -> Settings -> SSH keys。
  4. 添加新的 SSH Key: 找到 “Add SSH key” 或类似的按钮。
  5. 粘贴公钥并添加标题:
    • 在 “Key” 或 “Key content” 字段中,粘贴你复制的公钥字符串。
    • 在 “Title” 或 “Title/Description” 字段中,为这个密钥起一个有描述性的名字,比如 “My Laptop Key”、”Work Computer SSH” 等。这有助于你管理多个密钥。
  6. 保存/添加密钥: 点击 “Add Key” 或 “Add SSH key” 按钮保存。平台可能会要求你再次输入账户密码进行确认。

添加成功后,你的公钥就会显示在平台的 SSH Key 列表中。现在,该平台已经知道如何使用这个公钥来验证你的连接尝试。

第四部分:配置 SSH Agent(可选但推荐)

如果你为私钥设置了密码短语,每次使用该私钥时(例如 git pushgit pull),系统可能会提示你输入密码短语。这虽然增强了安全性,但也牺牲了一定的便利性。SSH Agent 就是用来解决这个问题的。

1. 什么是 SSH Agent?

SSH Agent 是一个在后台运行的程序,它会存储你的解密的私钥。当你第一次使用某个私钥时,你输入一次密码短语将其解锁并添加到 SSH Agent 中。之后,在 Agent 的生命周期内,你再次需要使用该私钥时,Agent 会自动为你提供私钥,无需再次输入密码短语。

2. 启动 SSH Agent 并添加密钥

启动 SSH Agent 并添加密钥的方法因操作系统和环境而异:

  • Linux / macOS:
    • 大多数现代系统(如 Ubuntu, Fedora, macOS)在用户登录时会自动启动一个 SSH Agent 进程。你可以通过 ssh-add -l 命令查看 Agent 中已经加载的密钥列表。
    • 如果 Agent 没有运行或你想手动添加密钥,可以使用以下命令:
      “`bash
      # 启动 Agent (如果尚未运行)
      eval “$(ssh-agent -s)”

      添加你的私钥到 Agent

      ssh-add ~/.ssh/id_ed25519

      如果你设置了密码短语,这里会提示你输入一次

      `eval "$(ssh-agent -s)"` 命令会将 Agent 的环境变量(SSH_AUTH_SOCK 和 SSH_AGENT_PID)设置到当前 shell 中,使其能够找到 Agent 进程。
      * 为了避免每次打开新的终端窗口都要手动启动 Agent 并添加密钥,你可以将 `eval "$(ssh-agent -s)"` 和 `ssh-add ~/.ssh/id_ed25519` (或你私钥的路径) 添加到你的 shell 配置文件中,例如 `~/.bashrc`、`~/.zshrc` 或 `~/.profile`。注意要做好判断,避免重复启动 Agent。例如:
      bash

      Add SSH key to agent automatically

      if [ -z “$SSH_AUTH_SOCK” ]; then
      eval “$(ssh-agent -s)”
      fi
      ssh-add -l > /dev/null || ssh-add ~/.ssh/id_ed25519
      ``
      这个脚本会检查
      SSH_AUTH_SOCK环境变量,如果不存在则启动 Agent;然后尝试列出已加载的密钥,如果私钥未加载(ssh-add -l失败或不包含你的密钥),则将其添加。
      * **Windows (Git Bash):**
      * Git Bash 通常会在启动时集成 SSH Agent。你可以在 Git Bash 中直接运行
      ssh-add命令。
      * 有时,Git Bash 会自动在后台启动 Agent 并提示你添加默认密钥。如果没有,你可以手动运行
      ssh-agentssh-add
      * Windows 上的 OpenSSH (自 Windows 10 v1809 开始内置) 也有 SSH Agent 服务 (
      ssh-agent服务),可以设置为自动启动。你可以通过服务管理器或 PowerShell (Get-Service ssh-agent) 进行管理。将私钥复制到%USERPROFILE%.ssh` 目录,并确保文件权限正确。

3. 检查 Agent 中的密钥

无论你使用哪种方法,都可以使用以下命令查看 SSH Agent 中当前已经加载的密钥列表及其指纹:

bash
ssh-add -l

如果你的密钥已成功添加到 Agent,你应该能看到类似于这样的输出:

256 SHA256:..................... [email protected] (ED25519)

如果 Agent 中没有任何密钥,或者 Agent 没有运行,你会看到错误信息。

第五部分:测试 SSH 连接

将公钥添加到托管平台并可能配置了 SSH Agent 后,是时候测试连接了。通过测试,你可以确认 SSH Key 配置是否正确,以及你是否能够通过 SSH 协议与远程仓库进行通信。

使用以下命令测试与 GitHub 的连接:

bash
ssh -T [email protected]

(将 github.com 替换为你使用的平台域名,例如 gitlab.combitbucket.org

  • -T: 这个选项禁用了伪终端分配,常用于测试连接,它不会让你登录到远程 shell,只会验证认证是否成功。
  • git@hostname: 这是 SSH 连接的格式。git 是大多数 Git 托管平台通过 SSH 提供访问时使用的默认用户名。hostname 是平台的域名。

当你第一次连接到一个新的主机时,SSH 会提示你确认主机的指纹,以防止中间人攻击:

The authenticity of host 'github.com (140.82.113.3)' can't be established.
ED25519 key fingerprint is SHA256:.....................
Are you sure you want to continue connecting (yes/no)?

仔细比对显示的指纹是否与平台官方提供的指纹一致(通常在平台的帮助文档中可以找到)。如果一致,输入 yes 并按回车。此后,该主机的指纹会被记录在你的 ~/.ssh/known_hosts 文件中,下次连接时就不会再提示。

  • 如果连接成功: 你会收到一个欢迎信息,表明你已通过 SSH 成功认证。例如,对于 GitHub:

    Hi username! You've successfully authenticated, but GitHub does not provide shell access.

    这里的 username 是你在该平台上的用户名。这表示你的 SSH Key 配置正确,并且你能够通过 SSH 与平台进行通信。

  • 如果连接失败: 你可能会看到权限被拒绝的错误信息 (Permission denied (publickey).) 或其他连接错误。这通常意味着 SSH Key 配置存在问题。请参考下一节的故障排除。

第六部分:在 Git 中使用 SSH URL

测试连接成功后,你就可以在 Git 命令中使用 SSH URL 了。SSH URL 的格式通常是 git@hostname:username/repository.git

例如:

  • GitHub: [email protected]:username/repository.git
  • GitLab: [email protected]:username/repository.git
  • Bitbucket: [email protected]:username/repository.git

  • 克隆仓库: 当你克隆一个远程仓库时,使用其 SSH URL:

    bash
    git clone [email protected]:username/repository.git

  • 现有仓库关联远程仓库: 如果你已经有一个本地仓库,想将其与远程仓库关联,使用 SSH URL 设置 origin:

    bash
    git remote set-url origin [email protected]:username/repository.git

    或者添加一个新的远程:

    bash
    git remote add origin_ssh [email protected]:username/repository.git

一旦你的本地仓库的远程 URL 配置为 SSH 格式,后续的 git pullgit pushgit fetch 等操作都会自动尝试使用 SSH Key 进行认证,无需再输入密码。

第七部分:使用 ~/.ssh/config 文件管理多个密钥或主机

很多时候,你可能需要为不同的 Git 平台(GitHub, GitLab)或不同的账户(个人账户, 工作账户)使用不同的 SSH Key。手动指定密钥文件路径会很麻烦。~/.ssh/config 文件就是用来解决这个问题的,它允许你为不同的主机定义别名和配置特定的连接设置,包括使用哪个私钥文件。

1. 创建或编辑 ~/.ssh/config 文件

如果 .ssh 目录下没有 config 文件,你可以手动创建一个:

bash
touch ~/.ssh/config

然后使用文本编辑器打开它:

“`bash
nano ~/.ssh/config

或者使用你喜欢的编辑器,如 vi, VS Code 等

“`

2. config 文件基本语法

config 文件由一系列 Host 块组成,每个块定义了一组连接参数:

Host alias
Hostname actual_hostname
User git # 对于 Git 托管平台通常是 git
IdentityFile ~/.ssh/path/to/your/private_key
Port 22 # 默认是 22,除非平台指定了其他端口
# 其他可选配置...

  • Host alias: 这是你在 Git 命令中使用的短名称或别名。例如,你可以将 github.com 设置为一个别名,或者为不同的账户设置不同的别名。
  • Hostname actual_hostname: 这是实际要连接的服务器主机名或 IP 地址。
  • User git: 大多数 Git 托管平台通过 SSH 访问时使用的用户名是 git
  • IdentityFile ~/.ssh/path/to/your/private_key: 指定连接到此主机时应使用的私钥文件的完整路径。
  • Port 22: 指定连接端口。对于标准的 SSH 连接到 Git 托管平台,通常是 22。

3. 常见配置示例

示例 1:为默认的 GitHub 连接指定密钥

如果你生成了一个非默认文件名的密钥,或者想明确指定密钥文件:

Host github.com
Hostname github.com
User git
IdentityFile ~/.ssh/id_ed25519

使用时,Git URL 保持不变:git clone [email protected]:username/repository.git。SSH 客户端会自动查找 ~/.ssh/config,匹配到 Host github.com,然后使用 IdentityFile 指定的私钥进行认证。

示例 2:管理多个 GitHub 账户

假设你有两个 GitHub 账户:个人账户([email protected],使用默认密钥 id_ed25519)和工作账户([email protected],使用密钥 id_work_ed25519)。

首先,为工作账户生成一个独立的密钥:

bash
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_work_ed25519

id_work_ed25519.pub 添加到你的工作 GitHub 账户。

然后,编辑 ~/.ssh/config 文件,添加以下配置:

“`

个人 GitHub 账户 (使用默认密钥或明确指定)

Host github.com
Hostname github.com
User git
IdentityFile ~/.ssh/id_ed25519

工作 GitHub 账户 (使用别名和指定的密钥)

Host github.com-work
Hostname github.com
User git
IdentityFile ~/.ssh/id_work_ed25519
“`

现在,当你克隆个人仓库时,使用标准的 GitHub SSH URL:

bash
git clone [email protected]:personal-username/personal-repo.git

克隆工作仓库时,使用你在 config 文件中为工作账户定义的别名:

bash
git clone [email protected]:work-username/work-repo.git

注意 URL 中的主机名变成了 github.com-work。Git 会将此 URL 传递给 SSH 客户端,SSH 客户端查找 config 文件,匹配到 Host github.com-work,实际连接到 Hostname github.com,但使用 IdentityFile ~/.ssh/id_work_ed25519 进行认证。

示例 3:同时管理 GitHub 和 GitLab 密钥

假设你的 GitHub 使用 id_ed25519,GitLab 使用 id_gitlab_ed25519

首先为 GitLab 生成密钥(如果还没有):

bash
ssh-keygen -t ed25519 -C "[email protected] for GitLab" -f ~/.ssh/id_gitlab_ed25519

id_gitlab_ed25519.pub 添加到你的 GitLab 账户。

编辑 ~/.ssh/config 文件:

“`

GitHub 密钥配置

Host github.com
Hostname github.com
User git
IdentityFile ~/.ssh/id_ed25519

GitLab 密钥配置

Host gitlab.com
Hostname gitlab.com
User git
IdentityFile ~/.ssh/id_gitlab_ed25519
“`

使用时:

“`bash

克隆 GitHub 仓库

git clone [email protected]:username/github-repo.git

克隆 GitLab 仓库

git clone [email protected]:username/gitlab-repo.git
“`

有了 config 文件,你可以非常灵活地管理不同主机和不同账户的 SSH 连接设置。

第八部分:故障排除常见问题

在使用 SSH Key 过程中,可能会遇到各种问题。以下是一些常见问题及其解决方法:

  1. Permission denied (publickey).
    • 问题原因: SSH 客户端尝试使用你的私钥进行认证,但服务器拒绝了。这通常是因为:
      • 你的公钥没有正确添加到 Git 托管平台账户中。
      • 你使用的私钥与添加到平台的公钥不匹配。
      • 你在 ~/.ssh/config 中指定了错误的 IdentityFile 路径或使用了错误的 Host 别名。
      • 你的私钥文件权限设置不正确(权限过于开放)。
      • SSH Agent 没有运行或你的密钥没有添加到 Agent 中(特别是如果你的私钥有密码短语)。
    • 解决方法:
      • 检查公钥: 登录到 Git 托管平台,确认你的公钥已经添加,并且复制粘贴的内容完全正确。使用 cat ~/.ssh/your_key.pub 再次查看并核对。
      • 检查私钥: 确认 ssh-keygen 生成的私钥文件存在,并且路径正确。
      • 检查 config 文件: 如果使用了 ~/.ssh/config,检查 HostHostnameIdentityFile 的设置是否正确。
      • 检查文件权限: .ssh 目录权限应为 700 (drwx------),私钥文件权限应为 600 (-rw-------)。公钥文件权限通常为 644 (-rw-r--r--)。使用 chmod 命令修正:
        bash
        chmod 700 ~/.ssh
        chmod 600 ~/.ssh/id_ed25519 # 替换为你的私钥文件名
        # chmod 644 ~/.ssh/id_ed25519.pub # 公钥权限通常问题不大
      • 检查 SSH Agent: 运行 ssh-add -l 查看密钥是否已加载。如果未加载,运行 ssh-add ~/.ssh/your_private_key 添加密钥并输入密码短语。确认 Agent 服务正在运行。
      • 检查连接 URL: 确认你在 Git 命令中使用了正确的 SSH URL(以 git@ 开头)。
  2. Could not resolve hostname ...
    • 问题原因: 无法解析远程主机名。可能是拼写错误,或者 DNS 问题。
    • 解决方法: 检查命令中的主机名拼写,确认网络连接正常。如果使用了 ~/.ssh/config,检查 Hostname 设置是否正确。
  3. Are you sure you want to continue connecting (yes/no)? 反复出现或指纹不匹配。
    • 问题原因: 远程主机的指纹发生了变化,或者你连接到了一个中间人攻击者伪造的主机。
    • 解决方法: 不要轻易输入 yes 务必通过官方渠道(平台帮助文档、安全公告)核对新的主机指纹。如果确认无误,可以删除 ~/.ssh/known_hosts 文件中对应主机的记录,然后再次连接并输入 yes。如果指纹不正确,说明连接可能被劫持,应立即中断连接并调查原因。
  4. 设置了密码短语,但每次都要输入。
    • 问题原因: SSH Agent 没有运行,或者私钥没有添加到 Agent 中。
    • 解决方法: 确保 SSH Agent 正在运行(ssh-agent -s),并使用 ssh-add 将私钥添加到 Agent 中。考虑将 Agent 配置为自动启动并在登录时自动添加密钥(参考前文第四部分)。
  5. 使用 ssh-keygen 时提示 .ssh 目录或文件已存在。
    • 问题原因: 你之前已经生成过 SSH Key。
    • 解决方法:
      • 如果你想保留现有的密钥并生成一个新的(例如用于不同目的),在提示输入文件路径时,输入一个新的、不冲突的文件名,例如 ~/.ssh/id_work_ed25519
      • 如果你想覆盖现有的密钥(请务必确定不再需要旧密钥,因为它将失效),直接按回车接受默认文件名。ssh-keygen 会提示你是否覆盖。

第九部分:安全注意事项

  • 保护你的私钥! 永远不要将你的私钥文件分享给任何人。私钥是你的身份证明,一旦泄露,他人就可以冒充你进行操作。确保私钥文件的权限设置正确 (chmod 600 ~/.ssh/your_private_key)。
  • 使用强密码短语。 为你的私钥设置一个复杂、难以猜测的密码短语。它提供了额外的安全层,即使私钥文件被盗,没有密码短语也无法使用。
  • 定期审查 Git 托管平台上的公钥。 检查你的账户设置中已添加的公钥列表,删除不再使用或来源不明的公钥。
  • 警惕主机指纹变化。 当 SSH 提示主机指纹变化时,要格外小心,务必核实。
  • 只将你的公钥添加到你信任的服务提供商。

结论

通过本文的详细讲解,你应该已经掌握了 Git SSH Key 的生成、配置和使用方法。从理解 SSH Key 的原理,到使用 ssh-keygen 生成密钥对,再到将公钥添加到 GitHub/GitLab 等平台,以及通过 ~/.ssh/config 文件进行高级配置和故障排除,你现在应该能够熟练地使用 SSH Key 替代传统的密码验证方式,从而提高 Git 操作的安全性、便捷性和效率。

拥抱 SSH Key,让你的 Git 工作流更加顺畅、安全!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部