github的SSH连接

3 阅读3分钟

因为国内的网络问题,github上的仓库用的比较少。最近拉仓库的时候发现,已经不能用密码clone仓库了;必须ssh链接。

创建SSH

步骤 1:检查 OpenSSH 是否可用:

  • 在 Git Bash 中运行:

    ssh -V
    
    • 输出示例:OpenSSH_8.4p1, OpenSSL 1.1.1k 25 Mar 2021。
  • Git for Windows 自带 OpenSSH,无需额外安装。如果没有输出,重新安装 Git for Windows 并确保选择“Use bundled OpenSSH”。

步骤 2:生成 SSH 密钥

  • 在 Git Bash 中运行以下命令(推荐使用 ED25519 算法,现代且安全):
ssh-keygen -t ed25519 -C "your_email@example.com"
  1. 设置密钥保存路径和密码:

    • 提示 Enter file in which to save the key (/c/Users/YourUsername/.ssh/id_ed25519): 时,直接按 Enter 接受默认路径(~/.ssh/id_ed25519)。

    • 提示输入密码(passphrase)时:

      • 建议直接按 Enter 跳过(无密码),以避免每次使用 SSH 时输入密码。
      • 如果设置了密码,需记住,后续可能需要输入。
  2. 确认密钥生成:

    • 密钥生成后,会在 C:\Users\YourUsername.ssh\ 目录下生成:

      • id_ed25519(私钥)
      • id_ed25519.pub(公钥)
    • 在 Git Bash 中运行以下命令查看:

ls -al ~/.ssh

步骤 3:将公钥添加到 GitHub

  1. 复制公钥内容:

    • 在 Windows 资源管理器中打开 C:\Users\YourUsername.ssh\id_ed25519.pub,用记事本复制内容。
  2. 添加公钥到 GitHub:

    • 登录 GitHub
    • 点击右上角头像 > Settings > SSH and GPG keys > New SSH key 或 Add SSH key。
    • 在 Title 字段输入描述(例如 “Windows 10 SSH Key”)。
    • 在 Key 字段粘贴公钥内容,点击 Add SSH key。
    • 如果账户启用了双重认证(2FA),可能需要输入密码确认。

步骤 4:配置 SSH 客户端

  1. 启动 SSH 代理:

    • 在 Git Bash 中运行:

      eval "$(ssh-agent -s)"
      
    • 输出示例:Agent pid 1234。

  2. 添加私钥到 SSH 代理:

    • 运行:

      ssh-add ~/.ssh/id_ed25519
      
    • 如果使用 RSA 密钥,运行:

      ssh-add ~/.ssh/id_rsa
      
    • 如果设置了密钥密码,需输入密码。

  3. (可选)配置 SSH 配置文件:

    • 检查 ~/.ssh/config 文件是否存在:

      ls ~/.ssh/config
      
    • 如果不存在,创建并编辑:

      bash

      touch ~/.ssh/config
      nano ~/.ssh/config
      
    • 添加以下内容(替换 id_ed25519 为你的私钥文件名,如果是 RSA 则为 id_rsa):

      bash

      Host github.com
          HostName github.com
          User git
          IdentityFile ~/.ssh/id_ed25519
      
    • 保存文件(Ctrl+O,Enter,Ctrl+X 退出 nano)。

    • 设置文件权限:

      bash

      chmod 600 ~/.ssh/config
      

步骤 5:测试 SSH 连接

  1. 测试 GitHub SSH 连接:

    • 在 Git Bash 中运行:

      ssh -T git@github.com
      
    • 如果成功,会看到:

      Hi username! You've successfully authenticated, but GitHub does not provide shell access.
      
    • 如果失败(如 Permission denied (publickey)):

      • 确认公钥已正确添加到 GitHub。
      • 检查 ~/.ssh/config 是否正确。
      • 确保 ssh-agent 正在运行且密钥已添加(重复步骤 4)。

步骤 6:拉取 GitHub 仓库

  1. 切换到 SSH URL:

    • 在 GitHub 仓库页面,点击 Code 按钮,选择 SSH,复制 URL(例如 git@github.com:username/repo.git)。

    • 克隆仓库:

      git clone git@github.com:username/repo.git