Github配置ssh key的步骤(大白话+包含原理解释)

1,804 阅读5分钟

配置ssh key

配置 GitHub SSH Key 其实是为了让你的电脑能通过 SSH 协议安全地访问 GitHub 仓库,而不用每次都输入 GitHub 的用户名和密码。这样,当你提交代码或拉取代码时,GitHub 就能通过 SSH Key 验证你的身份。下面是大白话的步骤和原理解释。

1. 生成 SSH 密钥对

SSH 密钥对由两部分组成:公钥私钥公钥是你上传到 GitHub 的,别人可以看到;私钥是你自己保管的,别人不能看到。

步骤:

  1. 打开终端(在 Windows 上可以使用 Git Bash 或者 WSL)。

  2. 输入以下命令生成 SSH 密钥:

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
    • -t rsa: 表示使用 RSA 算法。
    • -b 4096: 生成 4096 位密钥,越大越安全。
    • -C "your_email@example.com": 用你的 GitHub 账号的邮箱作为注释,方便标识。
  3. 接下来,终端会提示你选择存储路径(按 Enter 就是默认存储在 ~/.ssh/id_rsa),如果提示已有文件,可以选择覆盖或选择另存为一个新名字(例如 id_rsa_github)。

  4. 然后会要求你设置一个密码,这可以保护你的私钥。可以留空,但不推荐

原理:

  • 生成的公钥和私钥是成对存在的,公钥可以分享给任何人,私钥则需要保密。GitHub 通过公钥验证你的身份,而你的电脑通过私钥进行身份认证。

2. 将公钥添加到 GitHub

接下来,你需要将公钥上传到 GitHub 上,告诉 GitHub 你是这个公钥的所有者。

步骤:

  1. 使用以下命令查看公钥内容:
cat ~/.ssh/id_rsa.pub

2.复制公钥内容(包括 ssh-rsa 开头到你邮箱的部分)。

3.打开 GitHub,登录你的账号,进入 SSH and GPG keys 页面。

4.点击 New SSH key,然后粘贴你刚刚复制的公钥到 Key 栏,给它起个名字(比如:My Laptop),然后点击 Add SSH key

原理:

  • 你将公钥添加到 GitHub 之后,GitHub 就知道了只有持有对应私钥的电脑才能通过 SSH 协议进行认证,这样就保证了安全性。

3. 测试 SSH 连接

现在,你已经将公钥添加到 GitHub,接下来可以测试一下连接是否成功。

步骤:

1.在终端输入以下命令,测试是否能通过 SSH 连接到 GitHub:

ssh -T git@github.com

2.第一次连接时,系统会询问是否继续连接,输入 yes

3.如果成功,你会看到类似下面的输出:

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

原理:

  • 这个命令会尝试通过 SSH 协议连接到 GitHub 的服务器。如果你成功连接,表示身份验证通过。GitHub 会用你的公钥来确认你是注册时提供了这个公钥的人。

4. 配置 Git 使用 SSH(可选)

如果你以前是使用 HTTPS 来连接 GitHub 仓库的,你需要将 Git 的远程仓库 URL 修改为 SSH 方式。

步骤:

  1. 打开终端,进入你本地的 Git 仓库目录。

  2. 输入以下命令来修改远程仓库地址:

git remote set-url origin git@github.com:username/repository.git

记得将 usernamerepository 替换成你自己的 GitHub 用户名和仓库名。

3.使用以下命令确认是否修改成功:

git remote -v

输出应该是以 git@github.com 开头的地址。

原理:

  • 这样配置后,你的 Git 会使用 SSH 协议(而不是 HTTPS)与 GitHub 通信。通过 SSH,你不需要每次都输入用户名和密码,而是通过 SSH 密钥进行认证。

小结

通过这些步骤,你就完成了配置 GitHub 的 SSH Key,能够通过 SSH 协议安全地与 GitHub 仓库交互。这个过程的核心原理是利用公钥加密和私钥解密来验证身份,从而确保安全性,避免每次操作都输入用户名和密码。

通过 SSH 拉取 GitHub 上的代码

通过 SSH 拉取代码其实和普通的 Git 拉取代码类似,只是使用的是 SSH 协议,而不是 HTTPS 协议。因为你已经配置好了 SSH Key,所以每次拉取代码时,Git 会使用 SSH 密钥进行身份验证,而不需要输入用户名和密码。

1. 确保本地已经配置 SSH Key

-   确保你已经按照之前的步骤配置了 SSH 密钥并且将公钥添加到 GitHub。如果没有完成这一步,SSH 连接就不会成功。

2. 获取 GitHub 仓库的 SSH 地址

-   打开你在 GitHub 上想要拉取的仓库页面。
-   点击页面上的 **Code** 按钮,选择 **SSH** 选项卡,复制显示的仓库 SSH 地址。例如:
```scss
git@github.com:username/repository.git
```

3. 克隆仓库到本地

  • 在终端(或 Git Bash)中,进入你想要保存代码的目录。
  • 使用以下命令来克隆仓库:
git clone git@github.com:username/repository.git
  • 记得将 usernamerepository 替换为你自己的 GitHub 用户名和仓库名。

  • Git 会通过 SSH 协议连接到 GitHub 仓库,并使用你本地的私钥进行身份验证

4. 拉取最新代码(如果仓库已经克隆)

  • 如果你已经克隆了仓库并且想要拉取最新的代码,可以使用以下命令:
git pull origin main

其中,main 是默认的主分支(如果你的仓库使用的是其他分支名称,比如 master,请相应替换)。

原理解释:

  • 当你执行 git clonegit pull 命令时,Git 会尝试使用你在本地生成的 SSH 密钥对 GitHub 进行身份验证。具体来说:

    1. Git 向 GitHub 服务器发送连接请求。
    2. GitHub 根据你上传的公钥判断是否允许连接。
    3. 如果身份验证成功,GitHub 会允许访问仓库,Git 就可以将仓库内容克隆到本地或拉取最新的提交。

    由于 Git 使用 SSH 协议,不需要每次都输入用户名和密码,而是通过 SSH 密钥对进行安全认证。

小结:

通过 SSH 拉取代码,只需使用 git clonegit pull 命令,并确保远程仓库的 URL 是 SSH 格式。Git 会自动使用你配置的 SSH 密钥与 GitHub 进行身份验证,避免每次操作时都需要输入用户名和密码。