SSH Keygen GitHub:完整指南 – wiki大全

SSH Keygen GitHub: 完整指南

引言

SSH(Secure Shell Protocol)是一种加密的网络协议,用于在不安全的网络上安全地进行网络服务。当您与 GitHub 等代码托管平台交互时,使用 SSH 密钥对可以提供更安全、更便捷的认证方式,而无需每次都输入用户名和密码。

本指南将详细介绍如何在您的计算机上生成 SSH 密钥对,并将其添加到 GitHub 账户,从而实现安全的 Git 操作。

1. 检查现有 SSH 密钥

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

  1. 打开终端或 Git Bash (Windows)
  2. 输入以下命令:
    bash
    ls -al ~/.ssh

    这个命令会列出 ~/.ssh 目录(SSH 密钥的默认存储位置)中的所有文件。
  3. 查找名为 id_rsa.pubid_ecdsa.pubid_ed25519.pub 的文件。这些是您的公钥文件。如果存在,并且您愿意使用它们,则可以跳过生成新密钥的步骤。

    注意:如果您发现现有密钥,并希望使用它们,请跳到“添加您的 SSH 密钥到 GitHub”部分。如果您想生成新的密钥,可以继续。

2. 生成新的 SSH 密钥

如果您没有现有的 SSH 密钥,或者想为 GitHub 创建一个专用密钥,请按照以下步骤操作。

  1. 打开终端或 Git Bash (Windows)
  2. 输入以下命令生成新的 SSH 密钥对。我们推荐使用 Ed25519 算法,因为它比 RSA 更安全、更高效。
    bash
    ssh-keygen -t ed25519 -C "[email protected]"

    "[email protected]" 替换为您的 GitHub 注册邮箱地址。这有助于识别此密钥。

    如果您使用的是不支持 Ed25519 的旧系统或出于兼容性原因,可以使用 RSA 算法:
    bash
    ssh-keygen -t rsa -b 4096 -C "[email protected]"

    -b 4096 指定了 4096 位的密钥长度,这比默认的 2048 位更安全。

  3. 当提示“Enter a file in which to save the key”时
    按下 Enter 键以接受默认文件位置 (/c/Users/YOUR_USER/.ssh/id_ed25519~/.ssh/id_ed25519)。
    Enter a file in which to save the key (~/.ssh/id_ed25519): [Press enter]

  4. 当提示“Enter passphrase (empty for no passphrase)”时
    您可以输入一个安全密码。每次使用 SSH 密钥时,都需要输入此密码。为了额外的安全,强烈建议设置一个密码。如果您不想设置密码,直接按 Enter 键即可(不推荐)。
    Enter passphrase (empty for no passphrase): [Your strong passphrase]
    Enter same passphrase again: [Your strong passphrase]

    您的 SSH 密钥对已生成并保存在 ~/.ssh/ 目录中。公钥文件的名称通常以 .pub 结尾(例如 id_ed25519.pub),私钥文件没有扩展名(例如 id_ed25519)。

3. 将您的 SSH 密钥添加到 ssh-agent

ssh-agent 是一个程序,用于在内存中保存私钥,这样您就不必在每次使用 SSH 密钥时都输入密码。

  1. 启动 ssh-agent
    bash
    eval "$(ssh-agent -s)"

    此命令会启动 ssh-agent 并在当前 shell 中设置必要的环境变量。

  2. 将您的 SSH 私钥添加到 ssh-agent
    bash
    ssh-add ~/.ssh/id_ed25519

    如果您的密钥使用了不同的名称(例如 id_rsa),请相应地更改命令。
    如果设置了密码,系统会提示您输入密码。

4. 将您的 SSH 公钥添加到 GitHub

现在您已经生成了 SSH 密钥并将其添加到 ssh-agent,下一步是将您的公钥添加到 GitHub 账户。

  1. 复制您的 SSH 公钥

    • macOS / Linux
      bash
      cat ~/.ssh/id_ed25519.pub
      # 或者,如果使用 rsa
      # cat ~/.ssh/id_rsa.pub

      复制终端中显示的全部内容,从 ssh-ed25519ssh-rsa 开始,到您的邮箱地址结束。

    • Windows (Git Bash)
      bash
      clip < ~/.ssh/id_ed25519.pub
      # 或者,如果使用 rsa
      # clip < ~/.ssh/id_rsa.pub

      此命令会将公钥内容复制到剪贴板。

    • Windows (PowerShell)
      powershell
      Get-Content ~/.ssh/id_ed25519.pub | Set-Clipboard
      # 或者,如果使用 rsa
      # Get-Content ~/.ssh/id_rsa.pub | Set-Clipboard

      此命令会将公钥内容复制到剪贴板。

  2. 登录 GitHub
    打开您的网络浏览器并登录到您的 GitHub 账户。

  3. 导航到 SSH and GPG keys 设置

    • 点击右上角的个人资料照片,然后点击“Settings”。
    • 在左侧导航栏中,点击“SSH and GPG keys”。
  4. 添加新的 SSH 密钥

    • 点击“New SSH key”或“Add SSH key”按钮。
    • 在“Title”字段中,为您的密钥起一个描述性的名称(例如,“My Laptop Key”或“Work PC Ed25519 Key”)。
    • 在“Key”字段中,粘贴您之前复制的公钥内容。确保粘贴的是整个字符串,不要有任何额外的空格或换行符。
    • 点击“Add SSH key”。
    • 如果提示,请输入您的 GitHub 密码进行确认。

5. 测试您的 SSH 连接

成功将公钥添加到 GitHub 后,您可以测试连接以确保一切正常。

  1. 打开终端或 Git Bash (Windows)
  2. 输入以下命令:
    bash
    ssh -T [email protected]
  3. 当第一次连接到 GitHub 时,系统可能会询问您是否确定要继续连接。输入 yes 并按 Enter
    The authenticity of host 'github.com (IP_ADDRESS)' can't be established.
    RSA key fingerprint is SHA256:SOME_FINGERPRINT.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

    您应该会看到一条欢迎消息,例如:
    Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.
    其中 USERNAME 是您的 GitHub 用户名。如果看到此消息,则表示您的 SSH 连接已成功建立!

6. 故障排除

如果您在设置过程中遇到问题,请检查以下几点:

  • 权限问题:确保 ~/.ssh 目录及其中的文件具有正确的权限。
    • ~/.ssh 目录权限应为 700 (drwx------)。
    • 私钥文件(例如 id_ed25519)权限应为 600 (-rw-------)。
    • 公钥文件(例如 id_ed25519.pub)权限应为 644 (-rw-r--r--)。
      您可以使用 chmod 命令来更改权限:
      bash
      chmod 700 ~/.ssh
      chmod 600 ~/.ssh/id_ed25519
      chmod 644 ~/.ssh/id_ed25519.pub
  • ssh-agent 未运行或未添加密钥:确保 ssh-agent 正在运行,并且您的私钥已通过 ssh-add 命令添加到其中。
  • GitHub 公钥未正确复制:再次检查您复制并粘贴到 GitHub 的公钥是否完整且没有修改。
  • Git 仓库配置:确保您的 Git 仓库配置为使用 SSH 克隆 URL,而不是 HTTPS URL。例如:
    • SSH: [email protected]:USERNAME/REPOSITORY.git
    • HTTPS: https://github.com/USERNAME/REPOSITORY.git
      您可以使用 git remote -v 查看当前远程配置,并使用 git remote set-url origin [email protected]:USERNAME/REPOSITORY.git 进行更改。
  • 防火墙或代理:有时防火墙或代理设置可能会阻止 SSH 连接。检查您的网络配置。

希望这份指南能帮助您成功设置 SSH Keygen 并与 GitHub 进行安全高效的交互!

滚动至顶部