在 Windows 10 系统中,凭据管理器为我们记录了 GitHub 的 Windows 凭据,再次从终端经过 GitHub 写数据时,可自动保持登录状态。但其他 OS 不一定有这样的功能,因此不便于频繁地提交版本。
为此,可以使用 SSH 登录的方式访问远程库。

不同于 SSH 登录,使用 HTTPS 的方式可以在多个 GitHub 帐号间管理仓库。

image.png

在本地 Home 目录生成 GitHub 公/私钥

使用命令ssh-keygen -t <KeyType> -C <Annotation|AccountEmailAddress>在本地 Home 目录生成 GitHub 公/私钥。

使用生成过程提供的默认参数即可。

  1. 33891@LeapingQuantum MINGW64 ~
  2. $ ssh-keygen -t rsa -C 3389167252@qq.com
  3. Generating public/private rsa key pair.
  4. Enter file in which to save the key (/c/Users/33891/.ssh/id_rsa):
  5. Created directory '/c/Users/33891/.ssh'.
  6. Enter passphrase (empty for no passphrase):
  7. Enter same passphrase again:
  8. Your identification has been saved in /c/Users/33891/.ssh/id_rsa
  9. Your public key has been saved in /c/Users/33891/.ssh/id_rsa.pub
  10. The key fingerprint is:
  11. <...>
  12. The key's randomart image is:
  13. <...>

查看 .ssh 目录下的文件

.ssh目录下生成了id_rsaid_rsa.pub共 2 个文件。
使用cat命令查看并复制id_rsa.pub(公钥)的内容:

33891@LeapingQuantum MINGW64 ~
$ cd ~/.ssh/

33891@LeapingQuantum MINGW64 ~/.ssh
$ ll
total 5
-rw-r--r-- 1 33891 197609 2602 11月  1 20:38 id_rsa
-rw-r--r-- 1 33891 197609  571 11月  1 20:38 id_rsa.pub

33891@LeapingQuantum MINGW64 ~/.ssh
$ cat id_rsa.pub
<...>

在 GitHub 配置该 SSH 公钥

登录 GitHub 账户后,进入Settings中的SSH and GPG keys项执行配置:
image.png
image.png image.png

更改在本地的远程库地址

使用git remote set-url <Alias4RemoteRepositoryAddress> <RemoteRepositoryAddress>命令,将远程库地址由 HTTPS 方式切换为 SSH 方式:

33891@LeapingQuantum MINGW64 /d/GitWorkSpace/MyFirstProject_GitHub (master)
$ git remote -v
origin  https://github.com/TullyMonster/MyFirstProject_GitHub.git (fetch)
origin  https://github.com/TullyMonster/MyFirstProject_GitHub.git (push)

33891@LeapingQuantum MINGW64 /d/GitWorkSpace/MyFirstProject_GitHub (master)
$ git remote set-url origin git@github.com:TullyMonster/MyFirstProject_GitHub.git

33891@LeapingQuantum MINGW64 /d/GitWorkSpace/MyFirstProject_GitHub (master)
$ git remote -v
origin  git@github.com:TullyMonster/MyFirstProject_GitHub.git (fetch)
origin  git@github.com:TullyMonster/MyFirstProject_GitHub.git (push)

随后,即可使用 SSH 的方式免密读写 GitHub 的内容。