1705312545735

Github官方文档 - Connecting to GitHub with SSH:https://docs.github.com/en/authentication/connecting-to-github-with-ssh

什么是Github SSH连接

在管理Git项目时,需要进行登录验证,才能进行Clone、Commit、Pull、Push等方法。登录方式有两种:

  • HTTPS:通过加密的方式传输数据。通过账号密码进行登录验证。
  • SSH:通过一个不安全的网络提供一个安全的通道。通过SSH key进行登录验证。

这两种方式的主要区别在于:

  • HTTPS无需配置,但是需要在各种场景下频繁输入账号密码。
  • SSH配置key稍微麻烦一些,但是后续使用key即可登录,无需账号密码。
  • SSH更加契合在脚本中执行git操作的场景,因为git login是一个交互式指令,在脚本中处理git login比较麻烦。

生成SSH Key

检查现有SSH Key

在你的本地机器上,你需要有一个SSH Key才能使用ssh连接。要检查现有的SSH Key,打开终端并输入以下命令:

1
ls -al ~/.ssh

如果在ssh目录中列出了任何SSH Key,则可以选择使用现有SSH Key。但为了安全起见,为不同的应用程序/连接创建不同的SSH Key总是被认为是安全的,即使一个SSH Key被泄露,其他连接仍然安全。

生成SSH Key

  1. 打开终端并输入ssh-keygen命令:

    1
    ssh-keygen -t rsa -C "<你的邮箱>"
  2. 然后就会显示这两行:

    1
    2
    $ Generating public/private rsa key pair.
    $ Enter file in which to save the key (/c/Users/16627/.ssh/id_rsa):

    这是让你输入一个文件名,用于保存刚才生成的SSH Key代码。为了避免麻烦,不用输入,直接回车,那么就会默认生成id_rsa和id_rsa.pub两个SSH Key文件。

    这时候已经创建好.ssh这个文件夹了,会提示:

    1
    $ Created directory ‘/c/Users/16627/.ssh’.
  3. 紧接着你需要设置密码:

    1
    $ Enter passphrase (empty for no passphrase):

    如果你设置了密码,那在你使用ssh传输文件的时候,你就要输入这个密码。为了避免麻烦,建议不用设置,直接回车。

  4. 再次输入密码。

    1
    $ Enter same passphrase again:

    上一步没设置密码,这里直接回车就可以了。到这里你的SSH Key就设置好了,你会收到这段代码提示:

    1
    2
    3
    $ Your identification has been saved in ~/.ssh/id_rsa
    $ Your public key has been saved in ~/.ssh/id_rsa.pub
    # 还会具体向你展示你的SSH Key
  5. 当你看到上面这段代码,那就说明你的 SSH key 已经创建成功,你可以再次使用ls -al ~/.ssh查看你的Key。

  6. 然后,你会被提示“输入保存SSH Key的文件”。你可以按Enter使用默认位置,也可以指定自己的文件位置。为了避免将来的冲突,建议使用默认目录并按Enter。

添加到SSH-agent

现在我们有了SSH Key,我们可以将SSH Key添加到ssh-agent。SSH-agent是SSH的一个SSH Key管理器。将SSH Key添加到ssh-agent可以避免你反复输入密码短语。要将SSH Key添加到ssh-agent,我们首先在后台启动ssh-agent

1
eval "$(ssh-agent -s)"

现在我们的ssh-agent已经启动了,我们添加我们的SSH Key对到ssh。

1
ssh-add ~/.ssh/id_rsa

注意:如果在创建密钥时使用了不同的目录/文件名,请将~/.ssh/id_ed25519替换为密钥位置

添加SSH Key到GitHub

  1. 打开Github网页,点击右上角「个人头像 - 设置」

  2. 选择「SSH and GPG keys」

    1705307261849

  3. 点击「New SSH Key」

    • Title随便起个名字
    • Key Type默认即可
  4. 获取SSH Key

    • 打开~/.ssh路径
    • 打开id_rsa.pub文件
    • 复制其中的内容
    • 填写到表单的Key中

    1705311346284

  5. 点击「Add SSH Key」,这样就创建成功了

1705311459940

测试SSH key是否生效

在终端或git Bash中输入以下命令:

1
ssh -T git@github.com

注意是git@github.com,不是你的邮箱。

然后会提示你:

1
2
3
$ The authenticity of host ‘github.com (13.229.188.59)’ can’t be established.
$ RSA key fingerprint is SHA256:nThbg6kXUp…
$ Are you sure you want to continue connecting (yes/no/[fingerprint])?

输入yes,回车:

接下来就会提示你输入密码,如果上边设置ssh的时候,你没设置密码会提示你:

1
$ Warning: Permanently added ‘github.com,192.30.255.112’ (RSA) to the list of known hosts.

警告完了,如果你能看到如下提示,那你已经成功设置SSH Key。

1
$ Hi “<用户名>”! You’ve successfully authenticated, but GitHub does not provide shell access.